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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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