2012-05-16 13 views
5

Khi thêm gói StructureMap-MVC3 đến một ứng dụng ASP.NET MVC, một lớp IoC chứa một phương pháp Initialize được thêm vào (mà được gọi bằng một số mã trong thư mục App_Start) chứa các thông tin sau:Mục đích của scan.TheCallingAssembly, scan.WithDefaultConventions trong StructureMap-MVC3

public static class IoC 
{ 
    public static IContainer Initialize() 
    { 
     ObjectFactory.Initialize(x => 
      { 
       x.Scan(scan => 
        { 
         scan.TheCallingAssembly(); 
         scan.WithDefaultConventions(); 
        }); 
       // x.For<IExample>().Use<Example>(); 
      }); 
     return ObjectFactory.Container; 
    } 
} 

Mục đích của mã scan.TheCallingAssembly()scan.WithDefaultConventions() là gì? Tôi không thể thấy giải thích tốt về các phương pháp này trong số StructureMap documentation.

Khi sử dụng StructureMap trong dự án không phải MVC, tôi đã tìm thấy rằng toàn bộ phần x.Scan có thể bị xóa mà không bị ảnh hưởng.

Trả lời

7

Quét sẽ xem xét tất cả các loại được xác định trong Hội đồng của bạn và áp dụng quy ước StructureMap để xác định xem/cách thức chúng sẽ được đăng ký trong vùng chứa.

WithDefaultConventions có nghĩa là: "nếu trong khi quét tôi thấy một giao diện IExample, và có một loại Example mà thực hiện IExample, sau đó đăng ký Example như kiểu mặc định cho IExample".

Trong nhiều trường hợp, bạn sẽ có thể hỏi vùng chứa cho bất kỳ thứ gì bạn đang tìm kiếm (IExample) và nó sẽ trả về triển khai mà không cần cấu hình thêm.