![](/img/trans.png)
[英]MEF, can I export/import classes with multiple MetaDataAttribute decorations?
[英]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自动生成。 因此,它没有MyTestAttribute
的ToString
实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.