Как получить все возможные универсальные типы в StructureMap? - PullRequest
1 голос
/ 12 марта 2010

Я только что использовал StructureMap несколько дней назад. Я использую StructureMap для сбора всех классов валидаторов, как показано в следующем коде.

public class BaseClassA {}

public class ClassB : BaseClassA {}

public class ClassC : BaseClassB {}

public BaseClassAValidator : IValidator<BaseClassA>() {}

В StructureMap я регистрирую только интерфейс IValidator<BaseClassA> для класса BaseClassAValidator. Но я хочу получить тот же результат, когда я вызываю IValidator<ClassB> или IValidator<ClassC>, что означает, что StructureMap должен вернуть IValidator<T>, где T - запрошенный класс или родительский класс запрошенного класса.

Возможно ли это? Или мне нужно вручную позвонить.

1 Ответ

0 голосов
/ 12 августа 2011

Из ответа на Как использовать соглашение для IRepository с отображением StructureMap

var c = new Container(x =>
{
    x.Scan(scan =>
    {
        // there are other options to expand which assemblies to scan for types
        scan.TheCallingAssembly(); 
        scan.ConnectImplementationsToTypesClosing(typeof (IValidator<>));
    });
});

Теперь, если вы запросите IValidator<ClassC>, вы должны получить BaseClassCValidator.

...