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;
}
我有两个来自Job1
接口的Job2
和IJob
条款。请参阅上面的构造函数实现
Job2
构造函数有2个参数。第二个参数的值来自配置文件。我在注册Job2
时传递了这个值。
但是对于第一个参数MyService
,我希望Unity会自动将MyService
实例传递给构造函数,因为它已经注册了。但是当执行时我得到错误
MyNameSpace.Job2没有带参数的构造函数 (Int32)已
请注意,Unity可以将MyService
的实例传递给Job1
答案 0 :(得分:1)
添加第一个参数 - 服务类型:
container.RegisterType<IJob, Job2>("Job2", new InjectionConstructor(typeof(MyService), Convert.ToInt32(ConfigurationManager.AppSettings["Hours"])));