10

汎用インターフェースIValidatorがあります。StructureMapを使用して、特定のタイプTのIValidatorを実装するすべてのクラスのリストを取得できるようにしたい。たとえば、

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
var AddressValidators = ObjectFactory.GetAllInstances<IValidator<Address>>();

IValidatorを実装するすべてのクラスを取得する方法を知っていますが、typeパラメーターのタイプでフィルターする必要があります。

誰かが私にガイダンスや提案を与えることができますか?

ありがとう。

4

1 に答える 1

12

それはあなたの例とまったく同じように機能します。インスタンスがコンテナに登録されていることを確認するだけです。1 つの方法は、型をスキャンすることです。

ObjectFactory.Initialize(x =>
{
    x.Scan(scan =>
    {
        scan.TheCallingAssembly();
        scan.WithDefaultConventions();
        scan.AddAllTypesOf<IValidator<Person>>();
        scan.AddAllTypesOf<IValidator<Address>>();
    });
});

var PersonValidators = ObjectFactory.GetAllInstances<IValidator<Person>>();
于 2009-10-10T23:09:30.400 に答える