5

さまざまなユーザー インターフェイス アプリケーションが追加される、一元化された StructureMap 構成があります。「コア」構成を変更して追加する必要はありませんでした。今日、特定のアプリケーションのコア構成を変更または削除する必要があるインスタンスに遭遇しました。もちろん、コア構成コードを別のアプリケーションに移動することもできますが、そうする前に、StructureMap API で明らかな何かを見逃していないことを確認したかったのです。以下は、私のコア構成の簡略版です。

ObjectFactory.Initialize(cfg =>
{
    cfg.Scan(scan =>
        {
            scan.Assembly("Core");
            scan.WithDefaultConventions();

            scan.ConnectImplementationsToTypesClosing(typeof(IValidationRule<>));
            // more after this....
        }
}

この 1 つのアプリケーションの実行時に、タイプ Closing の構成を削除したいと考えていますIValidationRuleが、まだ実行可能なものを考え出していません。すべての取り出し方法は、シングルトンの意味を中心にしているようです。私はシングルトンを扱っていないので、以下は機能しません:

ObjectFactory.Model.For(typeof(IValidationRule<>)).EjectAndRemoveAll(); //no work

ObjectFactory.Model.EjectAndRemove(typeof(IValidationRule<>)); //nor does this

sを検索しないように StructureMap 構成を変更する方法はありますIValidationRuleか? s の非シングルトン インスタンスを排出できますIValidationRuleか? StructureMap 構成を変更するための他のオプションはありますか?

4

1 に答える 1

2

以下のようなものはどうでしょうか。これはうまくいくはずだと思います。

ObjectFactory.Model.EjectAndRemoveTypes(match
    => match != null && match.GetInterfaces().Any(i
        => i.Name.Contains("IValidationRule")));
于 2012-12-11T02:12:36.673 に答える