Вопрос

Я работаю над получением свободных действий, работающих с замком Виндзор. У меня уже есть обертка вокруг виндзора замка. Вот код для этого:

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

    public static void Initialize( IWindsorContainer windsorContainer )  
    {  
        _windsorContainer = windsorContainer;  
    }  

    public static T Of<T>()  
    {  
        return _windsorContainer.Resolve<T>();  
    }  
}  

Я пытаюсь построить фабрику в реальном времени, как это объясняется в http://www.jeremyskinner.co.uk/2010/02/22/using-fluentValidation-with-an-ioc-container.

В статье используются структурныйap, но я подумал, что смогу адаптировать его к замковому виндзору, как это:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

    public override IValidator CreateInstance( Type validatorType)
    {
        return ResolveType.Of<validatorType>();
    }
}

Обратите внимание, я просто пытаюсь позвонить в мою оболочку, чтобы Виндзор мог разрешить ссылку на тип.

Проблема в том, что это не скомпилируется. Я получаю «Тип или имя пространства имен» Validatortype 'не найден (вы отсутствуете на директиру с использованием или ссылкой на сборку?)

Как я могу сделать эту работу?

Это было полезно?

Решение

Добавьте этот метод к вашему ResolveType класс:

public static object Of(Type type) {
  return _windsorContainer.Resolve(type);
}

Тогда в вашем CastleWindsorValidatorFactory:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase {
    public override IValidator CreateInstance(Type validatorType) {
        return ResolveType.Of(validatorType) as IValidator;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top