سؤال

أنا أعمل على الحصول على FluentValidation مع Castle Windsor. لدي بالفعل غلاف حول القلعة وندسور. هنا هو رمز ذلك:

public class ResolveType  
{  
    private static IWindsorContainer _windsorContainer;  

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

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

أحاول بناء مصنع FleentValidation كما هو موضح في http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container

تستخدم المقالة هيكليًا ، لكنني اعتقدت أنه يمكنني تكييفه مع Windsor Castle مثل هذا:

public class CastleWindsorValidatorFactory : ValidatorFactoryBase
{

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

لاحظ ، أحاول فقط الاتصال في غلاف بلدي حتى يتمكن Windsor من حل مرجع النوع.

المشكلة هي أن هذا لا يجمع. لا يمكن العثور على "النوع أو اسم مساحة الاسم" 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