8

我有以下代码

public abstract class A
{
    public abstract string MethodA();
}

public class B : A
{

    public override string MethodA()
    {
        return "Class B method";
    }
}

public class C : A
{

    public override string MethodA()
    {
        return "Class C method";
    }
}

我想使用服务定位器注册和解决具体的实现。这可能吗?

4

2 回答 2

11

是的,可以,您可以使用以下名称注册:

 var container = new UnityContainer();
 container.RegisterType<A, B>("B");
 container.RegisterType<A, C>("C");

然后您可以根据如下名称解析:

 A b = container.Resolve<A>("B");
 A C = container.Resolve<A>("C");
于 2013-05-23T06:31:39.540 回答
2

给定一个统一容器容器,您应该能够做到

container.RegisterType<A, B>();
var b = container.Resolve<A>()
于 2013-05-23T06:28:16.670 回答