MEF - Silverlight - Jounce - Problème avec l'import (je pense)
Bonjour
J’essaie de faire une application avec Silverlight 4, Jounce 1 et en utilisant MEF. Pour l’instant, des pseudo objets métiers me servent à tester l’architecture.
J’ai une vue ServeurBleuView qui ne comprend que quelques zones de textes, avec un databind sur des propriétés dans ServeurViewModel.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| namespace Console.View
{
[ExportAsView(Global.CONFIG_SERVEURBLEU_VIEW)]
[ExportViewToRegion(Global.CONFIG_SERVEURBLEU_VIEW, Global.MAIN_REGION)]
public partial class ServeurBleuView : UserControl
{
public ServeurBleuView()
{
InitializeComponent();
}
[Export]
public ViewModelRoute Binding
{
get { return ViewModelRoute.Create(Global.CONFIG_SERVEURBLEU_VIEWMODEL, Global.CONFIG_SERVEURBLEU_VIEW); }
}
}
} |
ServeurBleuViewModel importe un pseudo objet métier, du type ConnexionServeurBleu.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| namespace Console.ViewModel
{
[ExportAsViewModel(Global.CONFIG_SERVEURBLEU_VIEWMODEL)]
public class ServeurBleuViewModel : BaseViewModel
{
[Import]
public ConnexionServeurBleu _maConnSb { get; set; }
public ServeurBleuViewModel()
{
NomServeurBleu = _maConnSb.NomServeurBleu;
UrlSb = _maConnSb.UrlServeurBleu;
}
public string NomServeurBleu { get; set; }
}
} |
La classe ConnexionServeurBleu s’exporte et importe le paramètre de son constructeur (injection de dépendance), de type interface IDonneesSb
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| namespace Console.ObjetsMetiersFake
{
[Export]
public class ConnexionServeurBleu
{
private IDonneesSb _connecteurDonnees;
[ImportingConstructor]
public ConnexionServeurBleu(IDonneesSb connecteurDonnees)
{
_connecteurDonnees = connecteurDonnees;
NomServeurBleu = connecteurDonnees.NomServeurBleu;
}
public string NomServeurBleu { get; set; }
}
} |
La classe DonnesSbXml implémente l’interface IDonneesSb et s’exporte.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| namespace Console.ObjetsMetiersFake
{
[Export(typeof (IDonneesSb))]
public class DonneesSbXml : IDonneesSb
{
public DonneesSbXml()
{
Initialise();
}
public string NomServeurBleu { get; set; }
public void Initialise()
{
NomServeurBleu = "Serveur Bleu n° 1";
}
}
} |
D’après ce que j’ai compris, Jounce se charge de la composition, et normalement, quand il charge ServeurBleuViewModel, il devrait charger ses dépendances (ServeurBleuViewModel--> ConnexionServeurBleu--> DonneesSbXml (en tant que IDonneesSb).
Mais j’ai un message d’erreur quand j’essaie d’afficher la vue ServeurBleuView : http://screencast.com/t/ERuRBGAM4
La solution est peut-être toute simple, mais je ne la trouve pas…
Edit : c'est ici que cela cloche :
[Import]
public ConnexionServeurBleu _maConnSb { get; set; }
l'import ne se fait, il devrait se faire sur :
[Export]
public class ConnexionServeurBleu
Merci pour votre aide !
Richard