3
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