皆さん、
現在、StructureMap のカスタム ILifecycles を実装しようとしています。イベントによっては、ライフサイクルが関連付けられているすべてのオブジェクトをライフサイクルから削除する必要があります。
ここにオブジェクトの登録があります。スコープを使用してライフサイクルを決定するプラグインタイプとコンクリートタイプのライフサイクルをマネージャーから取得します。
registry.For(pluginType)
.LifecycleIs(_lifecycleManager.GetLifecycle(pluginType, instance.GetType(), lifecycleScope))
.Use(instance);
オブジェクトの知識を保持するために LifecycleManager を使用しています。オブジェクトが既に存在するかどうかを確認し、createIfMissing = true を渡す場合にのみ作成/返す必要があるためです。
// determine if an instance already exists for the plugin type
bool doesInstanceExist = _lifecycleManager.ContainsInstance(pluginType);
if (createIfMissing)
{
// create a new instance or get an already existing one
container = DependencyInjectionContainer.GetInstance<T>();
}
else
{
// only get an existing instance
if (doesInstanceExist)
{
container = DependencyInjectionContainer.GetInstance<T>();
}
}
オブジェクトの作業が終了するか、関連するイベントが発生した後、オブジェクト インスタンスを削除して破棄する必要があります。私の問題は、StructureMap.Profile クラスが保持する参照を削除する方法が見つからないことです。それらは常にぶらぶらし続けます。
オブジェクトへのすべての参照を削除し、構成を保持するにはどうすればよいですか?