J'essaie de trouver la bonne façon d'injecter une usine automatique qui prend des paramètres, ou même si cela est possible avec Unity.Unity auto-factory avec params
Par exemple, je sais que je peux le faire:
public class TestLog
{
private Func<ILog> logFactory;
public TestLog(Func<ILog> logFactory)
{
this.logFactory = logFactory;
}
public ILog CreateLog()
{
return logFactory();
}
}
Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog();
Maintenant ce que j'aimerai pouvoir faire est:
public class TestLog
{
private Func<string, ILog> logFactory;
public TestLog(Func<string, ILog> logFactory)
{
this.logFactory = logFactory;
}
public ILog CreateLog(string name)
{
return logFactory(name);
}
}
Container.RegisterType<ILog, Log>();
TestLog test = Container.Resolve<TestLog>();
ILog log = test.CreateLog("Test Name");
Malheureusement, cela ne fonctionne pas. Je peux voir comment vous pouvez configurer des usines personnalisées pour créer des instances dans Unity, ne peut pas sembler financer des exemples clairs pour cet exemple.
Évidemment Je pourrais créer ma propre usine mais je cherche une manière élégante de faire ceci dans l'unité et avec le code minimum.
Est-il possible de faire quelque chose comme ça, mais en utilisant l'injection du constructeur? – dmigo
@Chesheersky l'exemple ci-dessus utilise l'injection du constructeur. – TheCodeKing
Droit, mon erreur :) – dmigo