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;
}
我有兩個clases Job1
和Job2
從IJob
接口派生。見上面的構造函數實現統一:如何注入配置和已註冊的實例
Job2
構造函數需要2個參數。第二個參數的值來自配置文件。我在註冊Job2
時通過了該值。 但是,對於第一個參數MyService
,我希望Unity會自動將MyService
實例傳遞給構造函數,因爲它已經註冊了。但是執行的時候,我得到錯誤
MyNameSpace.Job2沒有一個構造函數的參數 (Int32)已。
需要注意的是,團結能的MyService
實例傳遞給Job1
我認爲這是一個基礎問題。你應該檢查文檔 - > https://msdn.microsoft.com/en-us/library/ff648449.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 – Cabrra