是否可以將類型注入構造函數而不是實例? 如果是這樣如何實現?我希望避免顯式註冊工廠方法或儘可能原位解析實例。如何使用Unity將類型而不是實例注入到構造函數中
public interface IJob { }
public class TheJob : IJob { }
public interface IService
{
string GetTypeDesc();
}
public class Service : IService
{
private Type _jobType;
public Service(Type jobType)
{
_jobType = jobType;
}
public string GetTypeDesc()
{
return _jobType.ToString();
}
}
登記有明確定義構造函數的類型,即使它看來,團結想注入一個實例到類型佔位符。
Type jobType = typeof(TheJob);
(new UnityContainer()).RegisterType<IService, Service>(new InjectionConstructor(jobType));
如果我這樣做與RegisterType <,>我得到一個錯誤:類型UnitySample.Service沒有一個構造函數,採用參數(RuntimeType)。我開始認爲這是不可能的,沒有一些包裝或中間工廠,這是一個恥辱。 – user183872
@ user183872,它的工作原理。看到這個:https://dotnetfiddle.net/5IvzpJ –
@ user183872,正在使用.NET框架4.5? –