5 votes

PRISM + MEF -- Import & ImportMany

FooService.cs :

public interface IFooService
{
    int Foo();
}

[Export("Foo1", typeof(IFooService))]
public class Foo1 : IFooService
{
    public int Foo() { return 1; }
}

[Export("Foo2", typeof(IFooService))]
public class Foo2 : IFooService
{
    public int Foo() { return 2; }
}

FooViewModel.cs :

public class FooViewModel : NotificationObject
{
    [ImportMany(typeof(IFooService))]
    public IEnumerable<IFooService> FooServices { get; private set; }

    [Import("Foo1")]
    public IFooService FirstFoo { get; private set; }
}

L'importation unique fonctionne parce que j'ai un contrat nommé, mais l'importation multiple ne fonctionne pas. Si je modifie les attributs d'exportation et supprime le contrat nommé, l'importation multiple fonctionne, mais pas l'importation simple. Comment puis-je faire en sorte que les deux fonctionnent en même temps ?

3voto

Wim Coenen Points 41940

Vous pouvez mettre plusieurs attributs d'exportation sur vos classes :

[Export(typeof(IFooService))]
[Export("Foo1", typeof(IFooService))]
public class Foo1 : IFooService
{
    public int Foo() { return 1; }
}

[Export(typeof(IFooService))]
[Export("Foo2", typeof(IFooService))]
public class Foo2 : IFooService
{
    public int Foo() { return 2; }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X