나는 여러 클래스에 걸쳐 구현되는 "IRunAtStartup"인터페이스를 가지고 있습니다. 인터페이스에는 응용 프로그램 시작시 모든 클래스에 대해 실행해야하는 "Execute"메소드가 있습니다.Unity Container의 동일한 인터페이스에 대한 여러 클래스
컴파일 할 때 나는 인터페이스를 구현하는 클래스의 수를 모르고 있기 때문에 일반적인 방식으로 작성해야합니다. -에서 "유형을 확인할 수 없습니다"
container.RegisterTypes(runAtStartUp, WithMappings.FromAllInterfaces);
2) 컴파일 오류가 발생합니다 :
IOC의에 대한 유니티를 사용하고 다음은 내가 2를 시도 2 개 접근법)
한 접근 방법이다 런타임 오류가 발생합니다 for 루프 내부에 명령을 등록하십시오. 나는 Unity 세계에 상대적으로 새롭고 내가 여기에 몇 가지 기본적인 문제를 놓치고 있다고 의심한다.
IEnumerable<Type> runAtStartUp = typeFinder.FindClassesOfType<IRunAtStartup>(true);
foreach (var type in runAtStartUp)
{
container.RegisterType<IRunAtStartup, type>(type.AssemblyQualifiedName);
}
foreach (var task in container.ResolveAll<IRunAtStartup>())
{
task.Execute();
}
스택 추적을 게시 할 수 있습니까? 접근법 2는 괜찮은 것 같습니다. 등록 된 유형 중 하나에 문제가있을 수 있습니다. – cynic
접근법 2는 컴파일되지 않습니다. 여기 같은 스크린 샷이 있습니다 : https://dl.dropboxusercontent.com/u/11374665/approach-2.JPG – Vikram
오. 잘못된 C# 구문을 사용하고 있습니다. 'container.RegisterType (typeof (IRunAtStartup), type, Type.AssemblyQualifiedName)'을 대신 사용하십시오. – cynic