簡體   English   中英

在MEF MetadataAttribute上重寫ToString()

[英]Overriding ToString() on MEF MetadataAttribute

我有一個MEF MetadataAttribute:

[MetadataAttribute]
[AttributeUsage]
public class MyTestAttribute : ExportAttribute, IMyTest
{
    public MyTestAttribute(string pluginInfo)
    {
        _pluginInfo = pluginInfo;
    }

    string _pluginInfo;
    public string PluginInfo{get{return _pluginInfo;}}

    public override string ToString()
    {
         return PluginInfo;
    }
}

public interface IMyTest
{
    string PluginInfo{get;}
}

我還有一些其他元數據屬性,這些屬性是從其他接口繼承的。 我所有的屬性都覆蓋ToString() 我正在使用以下方法獲取插件:

            public void GetPlugins<TSender, TEventArgs, TAttributeMetadata>()
            {
                var importedPlugins = _container.GetExports<Action<TSender, TEventArgs>, TAttributeMetadata>(contract);
                foreach(var plugin in importedPlugins)
                {
                      string pluginInfo = plugin.Metadata.ToString();//this here is not
                      //returning plugin info. It is returning some kind of Guid and the interface name
                      //I could retrieve the pluginInfo via reflection but I don't want.
                }
            }

我的問題是為什么ToString()不返回pluginInfo? 我應該怎么做才能獲取pluginInfo? 沒有反射或動力,是否有可能?

任何幫助表示贊賞!

發生這種情況是因為導出的元數據是視圖,而不是元數據類的實例。 這是一個實現您的元數據接口( IMyTest )的類,該類由MEF自動生成。 因此,它沒有MyTestAttributeToString實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM