2013-05-23 24 views
5

Tôi đã đoạn mã sauĐăng ký lớp trừu tượng và giải quyết nguồn gốc lớp với Unity

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

Tôi muốn đăng ký và giải quyết việc triển khai cụ thể sử dụng dịch vụ định vị. Điều này có thể không?

Trả lời

10

Vâng, có thể, bạn có thể đăng ký sử dụng tên:

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

Và sau đó bạn có thể giải quyết dựa trên tên như bên dưới:

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

Với một container chứa sự hiệp nhất, bạn sẽ có thể để làm

container.RegisterType<A, B>(); 
var b = container.Resolve<A>() 
Các vấn đề liên quan