Ok, ça me rend fou! J'ai une méthode générique dans une classe générique.Passer un type de référence à la méthode générique avec 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!");
}
}
}
J'ai enregistré le générique dans un conteneur IoC en tant que tel:
container.RegisterType(typeof(IHandler<>), typeof(Handler<>));
Avec plusieurs cartographes pour analyser les fichiers avec le package FileHelpers
container.RegisterType<IMapper1, Mapper1>();
container.RegisterType<IMapper2, Mapper2>();
container.RegisterType<IMapper3, Mapper3>();
Mon conteneur est légitime pour la la majorité de mon application, et je peux installer l'objet IHandler.
IHandler<IMapper1> Handler1 = container.Resolve<IHandler<IMapper1>>();
Cependant, je ne peux pas comprendre comment passer l'objet IMapper1 dans la méthode parseCSV générique de sorte qu'il résoudra dans FileHelperEngine.
Est-ce que quelqu'un sait comment passer l'objet Mapper à FileHelperEngine en utilisant Unity? Je voudrais retirer cette dépendance du code client.
Et vous ne pouvez pas simplement passer un 'IMapper1' dans le constructeur de' Handler '? –
DavidG