public class Job1:IJob
{
public Job(MyService service)
{
}
}
public class Job2:IJob
{
public Job(MyService service,int hours)
{
}
}
public static IUnityContainer ConfigureUnityContainer()
{
UnityContainer container = new UnityContainer();
container.RegisterType<MyService, MyService>();
container.RegisterType<IJob, Job1>("Job1");
container.RegisterType<IJob, Job2>("Job2", new InjectionConstructor(Convert.ToInt32(ConfigurationManager.AppSettings["Hours"])));
return container;
}
Ich habe zwei clases Job1
und Job2
von IJob
Schnittstelle abgeleitet. Siehe die obige Implementierung des KonstruktorsUnity: Wie Konfiguration injizieren und bereits registrierte Instanz
Der Job2
Konstruktor benötigt 2 Parameter. Der Wert des zweiten Parameters kommt aus der Konfigurationsdatei. Ich übergebe diesen Wert während der Registrierung Job2
. Aber für den ersten Parameter MyService
, ich hoffte, Einheit wird automatisch MyService
Instanz an den Konstruktor seit seiner bereits registrieren. Aber wenn ich Fehler bekommen ausführen
MyNameSpace.Job2 keinen Konstruktor hat, der die Parameter nimmt (Int32).
anzumerken, dass die Einheit der Lage ist, passieren Instanz von MyService
-Job1
Ich denke, dass dies ein Fundament Problem. Sie sollten die Dokumentation überprüfen -> https://msdn.microsoft.com/en-us/library/ff648449.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 – Cabrra