2011-03-02 6 views
5

FooService.cs:प्रिज्म + MEF - आयात और 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; } 
} 


एकल आयात काम करता है क्योंकि मैं एक नामित अनुबंध है, हालांकि बहु आयात नहीं करता है। यदि मैं निर्यात विशेषताओं को बदलता हूं और नामित अनुबंध को हटा देता हूं, तो बहु आयात कार्य करता है, लेकिन एकल आयात नहीं करता है। मैं दोनों एक ही समय में काम करने के लिए कैसे मिल सकता है?

+0

मैं इस चश्मे से कोई लेना देना नहीं है नहीं लगता। –

उत्तर

3

आप एक से अधिक निर्यात डाल सकते हैं अपनी कक्षाओं पर जिम्मेदार बताते हैं:

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