2010-10-23 30 views
28

Làm cách nào để đăng ký với vùng chứa nơi loại không có hàm tạo không có PARAMETER.Cách registerType với hàm tạo PARAMETER?

Trong thực tế, hàm tạo của tôi chấp nhận một chuỗi và tôi thường chuyển một chuỗi đại diện cho một Đường dẫn.

Vì vậy, khi tôi giải quyết, nó sẽ tự động tạo loại mới nhưng chuyển vào chuỗi?

Trả lời

52

Thật đơn giản. Khi bạn đăng ký hàm tạo, bạn chỉ cần chuyển giá trị mà bạn muốn tiêm cho tham số. Vùng chứa khớp với hàm tạo của bạn dựa trên loại giá trị (API) hoặc tên của tham số (XML).

Trong API, bạn muốn làm:

container.RegisterType<MyType>(new InjectionConstructor("My string here")); 

Điều đó sẽ chọn một nhà xây dựng mà phải mất một chuỗi duy nhất, và vào thời điểm quyết tâm sẽ vượt qua chuỗi "My chuỗi ở đây".

XML tương đương (bằng cách sử dụng sơ đồ 2.0 config) sẽ là:

<register type="MyType"> 
    <constructor> 
    <param name="whateverParameterNameIs" value="My string here" /> 
    </constructor> 
</register> 
+0

Cảm ơn, chỉ là những gì tôi cần. – Martin

14

Bạn cũng có thể sử dụng được xây dựng trong InjectionConstructor và ResolvedParameter nơi connectionString là chuỗi kết nối cơ sở dữ liệu được sử dụng.

// install a named string that holds the connection string to use 
container.RegisterInstance<string>("MyConnectionString", connectionString, new ContainerControlledLifetimeManager()); 

// register the class that will use the connection string 
container.RegisterType<MyNamespace.MyObjectContext, MyNamespace.MyObjectContext>(new InjectionConstructor(new ResolvedParameter<string>("MyConnectionString"))); 

var context = container.Resolve<MyNamespace.MyObjectContext>(); 

Bạn có thể thực hiện thêm một bước nữa và có nhiều trường hợp được đặt tên là MyObjectContext, mỗi chuỗi sử dụng chuỗi kết nối của riêng họ với các cơ sở dữ liệu khác nhau.

Các vấn đề liên quan