1 つのファクトリ クラスで Castle.Windsor を使用して、必要なクラスのインスタンスを作成しています。以下に例を示します。
public class MyFactory : IDisposable
{
protected readonly IKernel Kernel;
protected MyFactory(IKernel kernel)
{
Contract.Requires<ArgumentNullException>(
kernel.NotNull(),
"'kernel' parameter must be initialized.");
Kernel = kernel;
}
public IMyType Create(long param1, long param2)
{
return Kernel.Resolve<IMyType>(
new { numberOfRows, numberOfCells });
}
public void Dispose()
{
DisposeManagedResources();
}
protected virtual void DisposeManagedResources()
{
Kernel.Dispose();
}
}
- ここで IDisposable が必要かどうかわかりません... MyFactory インスタンスを破棄した直後に Kernel を破棄する必要がありますか?
- IKernel (コンストラクター内) が Create メソッドで IMyType を解決するための最良の方法であるかどうかはわかりません。私は、誰かがよりエレガントなバージョンを提案できると思います:)
他のアイデアはありますか?
よろしくお願いします。