繁体   English   中英

在.NET 4中使用DirectoryCatalog创建同一零件的多个实例

[英]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>();

我认为这是解决我的问题的方法,也是斯蒂芬试图向我解释的内容:)

带有托管Ext Framwork(MEF)的工厂模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM