我正在研究MEF 2 (Microsoft.Composition),并希望将其与我现有的代码库集成。
我当前的代码库有一个IFactory
带有简单签名的接口:
public interface IFactory<T>
{
T Create();
}
我想注册我的工厂,这样如果我对工厂进行出口,它就会被注册为Func<T>
工厂的T
输出。所以是这样的:
[Export]
public class Factory : IFactory<Class>
{
public Class Create() => new Class();
}
将使用以下代码返回一个新Class
实例和对该Create
方法的引用(作为委托):Func<Class>
using ( var container = new ContainerConfiguration()
// ... magic missing here.
.CreateContainer() )
{
var instance = container.GetExport<Class>(); // instance is created from the Factory.Create above.
var factory = container.GetExport<Func<Class>>(); // this is a reference to the Factory.Create delegate defined above.
}
我确实看到了这个问题,但它似乎不适用于 MEF 2。现在各种事情都不同了,但似乎更加轻量/精简(如广告中所宣传的那样!)。
是否有可能实现我希望使用 MEF 2 做的事情?