我有以下控制台程序。但是,属性服务为null,并且以下代码块中的最后一行引发异常。我错过了什么?
class Program
{
static void Main(string[] args)
{
container = new UnityContainer();
container.RegisterType<Service.IService, Service.Service>();
container.RegisterType<IC1, C1>();
container.Resolve<Service.IService>();
// var c1 = container.Resolve<IC1>();
c1.Run();
}
[Depenency] C1 c1 { get; set; }
}
public class C1
{
[Depenency] Service.IService service { get; set; }
public void Run()
{
var s = service.GetSomething(); // service is null
答案 0 :(得分:2)
必须为public
注入属性。
public class C1
{
[Dependency] public Service.IService service { get; set; }
...
}
确实他们需要一个公共制定者。这有效:
public class C1
{
[Dependency] public Service.IService service { protected get; set; }
...
}
答案 1 :(得分:0)
您应该使用UnityContainer.Resolve而不是直接使用new
创建对象来解决依赖关系