2012-12-12 81 views
1

我正在使用MEF。我的應用程序是開放式的,但我仍然希望將它從擴展它的人中隱藏起來。導入一個類而不導出它

例如BaseAssembly有

public class ListContainer 
{ 
    [ImportMany(typeof(IBase))] 
    public List<IBase> MyObjects { get; set; } 

    public void AssembleDriverComponents() 
    { 
     .... Some code to create catalogue.. 
     //Crete the composition container 
      var container = new CompositionContainer(aggregateCatalog); 

      // Composable parts are created here i.e. the Import and Export components assembles here 
      container.ComposeParts(this); 
    } 
} 

其他組件將指基座組件。

ReferenceAssembly將有

[Export(typeof(IBase))] 
public class MyDerived 
{ 
    public MyDerived() 
    { } 
} 

我想避免這種屬性,它是在引用的程序集派生類。

可能嗎?

回答

2

我認爲你要找的是InheritedExport屬性。你可以在你的IBase界面上使用它,它會自動導出任何執行IBase的類。

[InheritedExport(typeof(IBase))] 
public interface IBase 
{ 
    // ... 
} 

public class MyDerived : IBase 
{ 
    // This class will be exported automatically, as if it had 
    // [Export(typeof(IBase))] in its attributes. 
} 

您可以閱讀更多關於繼承導出here

+0

是的..我認爲它應該適合我。 –