2016-10-11 19 views

答えて

3

私はルールの集まりで引っ張って私のコントローラを設定したい問題に走ったが、私は私が設定IRule[]の配列を持っていたので、それ自体で各ルールを一覧表示したくありませんでした。

コントローラー:

private readonly IRule[] _rules; 

public HomeController(IRule[] rules) 
{    
    _rules = rules; 
} 

インストーラ:

セットアップ城ウィンザーのインストーラ。

public void Install(IWindsorContainer container, IConfigurationStore store) 
{ 
    container.Register(Component.For<IRule>().ImplementedBy<ValidateNPIRule>()); 
    container.Register(Component.For<IRule>().ImplementedBy<ValidateZipRule>()); 
} 

重要な部分だったCollectionResolverに追加.AddSubResolver へのラインは、私は一度に私のルールのすべてを解決するために、インストーラのために必要なものだったと私は配列でそれらを引くことができます。

のGlobal.asax:

protected void Application_Start() 
{ 
    WindsorContainer container = new WindsorContainer(); 

    container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, true)); 
    container.Install(FromAssembly.This()); 
} 
+0

だから、あなたの問題や解決策のこの部分ですか? – Marco

+0

それは答えです。 – Sehab

+0

これは、コンポーネントが既に登録されていることを示す例外を発生させます。 – Sinaesthetic

関連する問題