我的元數據接口和屬性有基本接口。MEF GetExports <T>()無法正確導入
public interface IBase
{
string Name { get; }
}
public interface IAAAMetaData : IBase
{
string[] Names { get; }
}
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Method)]
public class AAAMetaData : ExportAttribute, IAAAMetaData
{
public AAAMetaData(string contract)
{
Name = contract;
}
public AAAMetaData(string[] contracts)
{
Names = contracts;
}
public string Name { get; set; }
public string[] Names { get; set; }
}
public interface IBBBMetaData : IBase
{
string[] Names { get; }
}
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Method)]
public class BBBMetaData : ExportAttribute, IBBBMetaData
{
public BBBMetaData(string contract)
{
Name = contract;
}
public BBBMetaData(string[] contracts)
{
Names = contracts;
}
public string Name { get; set; }
public string[] Names { get; set; }
}
這裏是我的插件:
[AAAMetaData("Test1")]
public void Plugin1(object sender, EventArgs e)
{
sender = "Plugin1";
}
[BBBMetaData("Test2")]
public void Plugin2(object sender, EventArgs e)
{
sender = "Plugin2";
}
現在,當我嘗試獲得出口我得到錯誤的結果。下面是我使用來獲得出口代碼:
var exports = _container.GetExports<Action<object, EventArgs>, IAAAMetaData>();
在GetExprts<T>()
我得到該列表中兩個項目的結果。如果我打開列表並查看其中導入Plugin2的項目。這裏有什麼問題? IAAAMetaData
和IBMetaData
是完全不同的東西。你甚至不能投IAAAMetaData
到IBBBMetaData
。任何人都可以解釋這裏發生了什麼?
感謝您的幫助!
看看這個[SO條目](http://stackoverflow.com/questions/1037795/getting-an-export-from-an-mef-container-given-only-a-type-instance)。 – pasty
@pasty我在您提供的鏈接中看不到有用的信息。也許我不能很好地解釋我的問題。如果你對理解我的問題有任何疑問,請告訴我。 – Dilshod