좋아,이게 나를 미치게 만든다! 제네릭 클래스에 제네릭 메서드가 있습니다.Unity를 사용하여 일반 메서드에 참조 유형 전달
public interface IHandler<T> where T : class
{
T[] parseCSV(string InputFileName)
}
public class Handler<T> : IHandler<T> where T : class
{
public T[] parseCSV(string InputFileName)
{
if (File.Exists(InputFileName))
{
_inputFileName = InputFileName;
var Engine = new FileHelperEngine<T>();
return Engine.ReadFile(_inputFileName);
}
else
{
throw new IOException($"{InputFileName} not found!");
}
}
}
나는 같은 IoC 컨테이너에서 일반을 등록 :
container.RegisterType(typeof(IHandler<>), typeof(Handler<>));
여러 매퍼와 함께이
container.RegisterType<IMapper1, Mapper1>();
container.RegisterType<IMapper2, Mapper2>();
container.RegisterType<IMapper3, Mapper3>();
내 컨테이너가에 대한 합법적 인 FileHelpers 패키지 파일을 구문 분석 내 애플 리케이션의 대부분, 그리고 IHandler 개체 instent 수 있습니다.
IHandler<IMapper1> Handler1 = container.Resolve<IHandler<IMapper1>>();
그러나, 나는 그것이 FileHelperEngine에 해결할 수 있도록 일반 parseCSV 방법에 IMapper1 객체를 전달하는 방법을 알아낼 수 없습니다.
Unity를 사용하여 Mapper 객체를 FileHelperEngine에 전달하는 방법을 아는 사람이 있습니까? 그 의존성을 클라이언트 코드에서 없애고 싶습니다.
그리고'IMapper1'을'Handler'의 생성자로 전달할 수 없습니까? –
DavidG