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 でやりたいことを達成することは可能ですか?