2011-03-02 23 views
5

FooService.cs:PRISM + MEF - Importación y ImportMany

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; } 
} 


Las obras individuales de importación porque tengo un contrato con nombre, sin embargo, la importación múltiple no. Si cambio los atributos de exportación y elimino el contrato nombrado, la importación múltiple funciona, pero la importación única no. ¿Cómo puedo hacer que ambos trabajen al mismo tiempo?

+0

no creo que esto tiene algo que ver con el prisma. –

Respuesta

3

Usted puede poner múltiples atributos de exportación en sus clases:

[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; } 
} 
Cuestiones relacionadas