Я использую Unity. Я могу регистрировать обычные открытые типы. Но в этом случае интерфейс имеет открытый общий вложенный один шаг внутри.Регистрация вложенных открытых общих типов в Unity
Есть ли способ зарегистрировать такие вещи с Unity?
class DoSomethingCommandHandler<TModel> : ICommandHandler<DoSomethingCommand<TModel>>
{
public void Handle(DoSomethingCommand<TModel> cmd)
{
var model = cmd.Model;
//do thing with model
}
}
class QuickTest
{
static void Go()
{
var container = new UnityContainer();
container.RegisterType(
typeof(ICommandHandler<>).MakeGenericType(typeof(DoSomethingCommand<>)),
typeof(DoSomethingCommandHandler<>));
//This blows up:
var res = container.Resolve<ICommandHandler<DoSomethingCommand<object>>>();
}
}
Может быть, я чего-то не хватает (например, некоторый дополнительный код), но если я попробую: 'ICommandHandler> handler = new DoSo methingCommand
'DoSomethingCommand' не реализует' ICommandHandler', поэтому ожидается ошибка компилятора. Только 'DoSomethingCommandHandler' реализует' ICommandHandler' – Joel