我在這裏是一個完整的初學者,所以這可能是一個非常明顯的問題,我似乎無法理解或找到答案。我已閱讀MSDN example,其中大部分內容完全合理。MEF元數據與價值
在這個例子中,他們定義了以下接口並給出了這樣的例子用法;
public interface IOperation
{
int Operate(int left, int right);
}
public interface IOperationData
{
char Symbol { get; }
}
[Export(typeof(IOperation))]
[ExportMetadata("Symbol", '+')]
public class Add : IOperation
{
public int Operate(int left, int right)
{
return left + right;
}
}
我想我在這裏一定是誤會。
IOperationData
和ExportMetadata
是什麼意思?- 爲什麼我不能直接放下它們並將
char Symbol {get;}
加到IOperation
?
然後我可以使用Add.Value.Symbol
而不是Add.Metadata.Smybol
。我想這不是一個真正的巨大變化,但它確實意味着我不需要ExportMetadata
。 Value
和Metadata
之間有什麼區別,爲什麼示例使用它們呢?屬性爲Metadata
,方法爲Value
?它似乎沒有很好地向我解釋。
權,因此元數據是一種避免初始化的方法,但仍然可以獲得信息。這就說得通了。要補充一點,是否有可能有多個元數據值?我只是在第一個下面添加另一個ExportMetadata? – Trent
是的,你可以添加另一個'ExportMetadata',這是做你想做的事情的方法之一。另一種方法是製作自己的'ExportAttribute'(我將在我的答案中添加示例)。 – Dennis
太棒了。謝謝丹尼斯。 – Trent