Преобразование некоторого кода из Ninject в StructureMap - PullRequest
1 голос
/ 19 апреля 2011

Я пытаюсь использовать решение Стивена для проверки сервисного уровня, которое изложено в его ответе на какой-то вопрос StackOverflow ( Проверка: как внедрить оболочку Model State с помощью Ninject? ). К сожалению, я относительно новичок в внедрении зависимостей и ничего не знаю о Ninject. В своем коде он использует Ninject для выполнения IoC, но в своем проекте я использую StructureMap. Я пытался преобразовать код в синтаксис StructureMap, но мне не удалось ... В любом случае, вот код Ninject:

Func<Type, IValidator> validatorFactory = type =>
{
    var valType = typeof(Validator<>)
        .MakeGenericType(entity.GetType());
    return (IValidator)kernel.Get(valType);
};

kernel.Bind<IValidationProvider>().ToConstant(
    context => new ValidationProvider(validatorFactory));

kernel.Bind<Validator<Product>>().To<ProductValidator>();

А вот моя попытка:

Func<Type, IValidator> validatorFactory = type =>
{
    var valType = typeof(Validator<>)
        .MakeGenericType(type.GetType());
    return (IValidator) ObjectFactory.GetInstance(valType);
};

container.Configure(x =>
{
    x.For<IValidationProvider>()
        .Use(() => new ValidationProvider(validatorFactory));
    x.For(typeof(Validator<>)).Use(typeof (NullValidator<>));

});

Я получаю эту ошибку:

Экземпляр по умолчанию не определен для PluginFamily Sharwe.Services.Validation.Validator

Так как мне это исправить?

...