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

You should use UnityContainer.Resolve instead of creating object with new directly to resolve dependencies

于 2012-12-03T21:26:36.810 に答える