是否可以将类型注入构造函数而不是实例? 如果是这样如何实现?我希望避免显式注册工厂方法或尽可能原位解析实例。如何使用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? –