2013-05-23 9 views
5

Mam następujący kodRejestracja klasa abstrakcyjna i rozwiązać pochodzi z klasy Jedności

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

Chciałbym zarejestrować się i rozwiązywać konkretne implementacje użyciu lokalizatora usług. czy to możliwe?

Odpowiedz

10

Tak, to możliwe, mogą zarejestrować się używając nazwy:

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

a następnie można rozwiązać na podstawie nazwy jak poniżej:

A b = container.Resolve<A>("B"); 
A C = container.Resolve<A>("C"); 
1

Biorąc pojemnik pojemnik jedność, powinieneś być w stanie zrobić

container.RegisterType<A, B>(); 
var b = container.Resolve<A>() 
Powiązane problemy