2012-12-06 23 views
8

Trong Simple Injector tôi có thể làm như sau:Injector đơn giản vượt qua giá trị cứng mã hóa vào constructor

container.RegisterSingle<IAuctionContext>(() => new AuctionContext(
    new Uri("http://localhost:60001/AuctionDataService.svc/"))); 

Những gì tôi đang làm ở đây là nói rằng khi IAuctionContext được tìm thấy, thay thế nó bằng mới AuctionContext này. Vấn đề là với cuộc gọi đến RegisterSingle, chỉ một trường hợp duy nhất là AuctionContext sẽ được sử dụng. Những gì tôi muốn nó để có thể vượt qua trong một tham số Uri như trên nhưng không có trường hợp duy nhất nhưng cho phép một trường hợp mới mỗi lần.

Làm cách nào có thể?

+0

Tôi đã chỉnh sửa câu hỏi của bạn và xóa chữ ký của bạn trên http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts. Vui lòng không sử dụng chữ ký. =) –

+0

Tôi sẽ ghi nhớ điều này trong lần sau, cảm ơn. –

Trả lời

18

Giá trị bạn đang cố gắng tiêm là một giá trị được mã hóa đơn giản. Đối với giá trị không đổi như giá trị mã hóa cứng và giá trị cấu hình, chỉ cần sử dụng các phương pháp Register:

var uri = new Uri("http://localhost:60001/AuctionDataService.svc/"); 

container.Register<IAuctionContext>(() => new AuctionContext(uri)); 

Phương pháp Register đảm bảo một trường hợp mới được trả lại mỗi lần.

Khi nói đến việc tiêm các giá trị có thể thay đổi trong quá trình đăng ký, vui lòng đọc this article about injecting runtime data.

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