2013-05-23 13 views
5

と派生クラスを解決する私はサービスロケータを使用して、具体的な実装を登録し、解決したいと思います次のコード登録抽象クラスとユニティ

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"; 
    } 
} 

を持っています。これは可能ですか?ユニティ・コンテナコンテナを考えると、あなたは可能、はい

container.RegisterType<A, B>(); 
var b = container.Resolve<A>() 

答えて

10

を行うことができるはず

1

、名前使用して登録することができます

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");