好吧,這讓我瘋狂!我在泛型類中有一個泛型方法。將參考類型傳遞給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<>));
隨着幾個映射器解析文件與FileHelpers包
container.RegisterType<IMapper1, Mapper1>();
container.RegisterType<IMapper2, Mapper2>();
container.RegisterType<IMapper3, Mapper3>();
我的容器是合法的我大部分的應用程序,我可以安裝IHandler對象。
IHandler<IMapper1> Handler1 = container.Resolve<IHandler<IMapper1>>();
但是,我想不出如何將IMapper1對象傳遞到通用parseCSV方法,因此將在FileHelperEngine解決。
有誰知道如何使用Unity將Mapper對象傳遞給FileHelperEngine?我想從客戶端代碼中獲得該依賴關係。
而且你不能只傳入一個'IMapper1'到'Handler'的構造函數中? –
DavidG