0

我有以下控制台程序。但是,属性服务为 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
4

2 回答 2

2

public必须注入属性。

public class C1
{
    [Dependency] public Service.IService service { get; set; }
...
}

事实上,他们需要一个公共二传手。这有效:

public class C1
{
    [Dependency] public Service.IService service { protected get; set; }
...
}
于 2012-12-03T21:23:18.237 回答
0

您应该使用UnityContainer.Resolve而不是直接创建对象new来解决依赖关系

于 2012-12-03T21:26:36.810 回答