この共通パターンはプロキシパターンです。このパターンを使用すると、ランタイムまでに使用する実装の決定を遅らせることができ、プロキシ内で決定を隠す一方、完全なオブジェクトグラフを前面に構築することができます。
例:
public sealed class RequestPermissionSelectorProxy : IPermission
{
private readonly PermissionRepository one;
private readonly PermissionRepositoryTwo two;
public RequestPermissionSelectorProxy(
PermissionRepository one, PermissionRepositoryTwo two) {
this.one = one;
this.two = two;
}
// Here select the permission based on some runtime condition. Example:
private IPermission Permission =>
HttpContext.Current.Items["two"] == true ? two : one;
public object PermissionMethod(object arguments) {
return this.Permission.PermissionMethod(arguments);
}
}
ここで登録する方法は次のとおりです。
container.RegisterType<IPermission, RequestPermissionSelectorProxy>(
new HierarchicalLifetimeManager());
あなたは2つの実装を切り替えたいどうすればよいですか? web.configの設定スイッチに基づいていますか?ユーザーの要求のようなランタイムデータに基づいていますか? – Steven
お返事ありがとうございます。私は要求に応じて設定を使用します。私はWebApiConfigファイルに設定できると思っていましたが、このファイルは一度しか呼び出されません。 –