2012-06-01 34 views
5

Tôi muốn để có thể tải đoạn mã sau vào Unity:ánh xạ tải Unity từ một tập tin XML

UnityContainer.RegisterType<ClientRegistrationVM, ClientRegistrationVMDesign>(); 

Bằng cách tải nó thông qua một tập tin XML.

Đây sẽ là một số mã psudo về những gì tôi muốn xảy ra.

FileStream unityMappings = new FileStream(@".\UnityMappings.xml", FileMode.Open) 
UnityContainer.CreateFromXML(unityMappings); 
unityMappings.Dispose(); 

Và file UnityMappings.xml sẽ chứa các ánh xạ và dlls rằng các loại đang có mặt.

phải là những gì tôi muốn thậm chí có thể với Unity? Có ai làm điều này trước khi?

+2

@SebastianWeber - Tôi đã "nghe nói về Google" (một chút sỉ nhục trong những giai điệu đó). Tôi đã làm điều đó với Google. Tôi chỉ không biết cụm từ đúng. Hãy thử google "unity ioc từ tập tin" Chỉ có liên quan hit bạn sẽ nhận được là câu hỏi của tôi (mà tất nhiên là không có khi tôi googled). – Vaccano

+0

[This] (http://geekswithblogs.net/Sharpoverride/archive/2009/08/20/ioc-containers-in-.net-part-6-unity-container.aspx) là kết quả thứ 5 trên trang đầu tiên danh sách kết quả của Google bằng cụm từ tìm kiếm của bạn. Vì nó cho thấy một cấu hình mẫu cho Unity sử dụng XML, tôi xem nó là một kết quả có liên quan. –

+0

@SebastianWeber - Tôi không thấy điều đó. Nhưng ngay cả như vậy mà sử dụng App.Config. Tôi cần một tệp xml đứng miễn phí (như được cung cấp bởi nemesv). – Vaccano

Trả lời

8

Bạn có thể sử dụng cấu hình XML với Unity, thậm chí bạn có thể trộn cấu hình thời gian thiết kế (XML) và cấu hình thời gian chạy (mã).

Tuy nhiên, Design-Time Configuration sử dụng UnityConfigurationSection và tải cấu hình chỉ được hỗ trợ thông qua việc này, do đó bạn cần thực hiện thêm một chút công việc nếu bạn muốn có cấu hình ở tệp khác (ví dụ: app.config hoặc web.config).

May mắn là bạn có thể tìm thấy một mẫu trong tài liệu dưới: Loading the Configuration from Alternative Files phần:

using System.Configuration; 

var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "unity.config" }; 

Configuration configuration = 
    ConfigurationManager.OpenMappedExeConfiguration(fileMap,     
                ConfigurationUserLevel.None); 

var unitySection = (UnityConfigurationSection)configuration.GetSection("unity"); 

var container = new UnityContainer().LoadConfiguration(unitySection); 
Các vấn đề liên quan