[英]Creating multiple instances of same part with DirectoryCatalog in .NET 4
我试图创建使用DirectoryCatalog导入的同一部分的多个实例,以使类已经使用相同部分的“个人”实例,如下所示:
interface TMyType
{
some method...
}
public class PluginHelper
{
ImportMany of type TMyType with CreationPolicy non shared
...
public bool GetPluginByName(string name)
{
GetPlugin based on name requested
}
}
class A
{
plugin = PluginHelper.GetPluginByName("PLUGIN1")
}
class B
{
plugin = PluginHelper.GetPluginByName("PLUGIN1")
}
这实际上有效,但是A.plugin与B.plugin是相同的实例...使用.Net 4(非4.5)看起来我应该将导入移动到每个类中,然后在此处选择所需的插件。 我知道我可以使用Lazy来避免在合成时创建零件,但是看起来还是很丑的...
谷歌搜索很多无济于事。
TIA
为什么不为此使用工厂?
//inside class: example PluginFactory
public IPlugin ReturnSomeType<T>() where T : IPlugin, new()
{
return new T();
}
//if the plugins don't share the same interface
public T ReturnSomeType<T>() where T : class, new()
{
return new T();
}
//usage
var factory = new PluginFactory();
var pluginA = factory.ReturnSomeType<SomePluginA>();
var pluginB = factory.ReturnSomeType<SomePluginB>();
我认为这是解决我的问题的方法,也是斯蒂芬试图向我解释的内容:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.