0
複数のルール呼び出しを処理できる単一のルールがあるため、ルールクラスに配置されたカスタム属性が作成されています。この属性は、処理が許可されている名前をリストします。構造マップでは、私はカスタム属性を読むことによって複数の名前と同じルールを登録したいと思います。名前リストを使用して複数のインスタンスをカスタム属性に登録する
[RuleIdentifer(new string[] { "RunAction1","RunAction2","RunAction3" })]
私はMissingNamedInstanceIsクラスを使用しようとしましたが、双方向依存性エラーが発生しました。
_.For<Rules.IRule>().MissingNamedInstanceIs.ConstructedBy("Pull Rule by Name from Attribute",r =>
{
return r.GetAllInstances<Rules.IRule>().FirstOrDefault<Rules.IRule>(r1 =>
{
var dnAttribute = r1.GetType().GetCustomAttributes(typeof(RuleIdentifer), true).FirstOrDefault() as RuleIdentifer;
if (dnAttribute != null && dnAttribute.Names.Contains<string>(r.RequestedName)) return true;
return true;
});
});
はスキャン区間NameBy呼び出しでこれを行うにはそこには良い方法です::以下は、スキャン後にコンテナの作成中に置かれている
x.AddAllTypesOf<Rules.IRule>().NameBy(t => t.Name);