Tôi đang sử dụng ví dụ về Registry DSL để định cấu hình structuremap. Nhưng làm điều này làm cho tất cả các loại đăng ký của tôi có sẵn trong tất cả các lớp của ứng dụng của tôi, nơi tôi thêm một refernce vào bản đồ cấu trúc. Tôi không muốn lớp kinh doanh của tôi biết bất cứ điều gì về lớp truy cập dữ liệu của tôi và ngược lại. Làm thế nào để tôi có được structuremap để chỉ đăng ký các loại cụ thể cho mỗi lớp của tôi?Sơ đồ cấu trúc - Cách đăng ký một số loại nhất định trong các lớp nhất định
Đây là mã trong tập tin Global.asax của tôi:
ObjectFactory.Initialize(x =>
{
x.AddRegistry<RegistryIOC>();
});
Và đây là lớp RegistryIOC tôi:
public class RegistryIOC : SMRegistry
{
public RegistryIOC()
{
For<IProfileService>.Use<ProfileService>();
For<IProctorService>().Use<ProctorService>();
//Business Logic Objects
For<IQual>().Use<Qual>();
For<ITest>().Use<Test>();
For<IBoldface>().Use<Boldface>();
For<ITrainingPlan>().Use<TrainingPlan>();
For<IUnit>().Use<Unit>();
//Data Transfer Objects
For<IGenericDTO>().Use<GenericDTO>();
For<IProfileDTO>().Use<ProfileDTO>();
For<IQualDTO>().Use<QualDTO>();
For<IPermissionDTO>().Use<PermissionDTO>();
//Repository Objects
For<IProctorRepository>().Use<ProctorRepository>();
For<IQualsRepository>().Use<QualsRepository>();
For<ITestRepository>().Use<TestRepository>();
For<IUnitRepository>().Use<UnitRepository>();
For<IUserRepository>().Use<UserRepository>();
}
}
Thanks for the help.
Bạn đang nói về loại lớp nào? Quy trình khác nhau? Máy khác nhau?Nếu tất cả chúng đều chạy trong cùng một quá trình, bạn có thể làm những gì mà tầng nghiệp vụ của bạn biết * một chút * về lớp dữ liệu của bạn, cụ thể là giao diện của nó. Không rõ bạn đang cố giải quyết vấn đề gì. Điều gì là sai với lớp RegistryIOC của bạn? –
Chúng tôi có một Lớp dịch vụ, BLL và DAL là tất cả các dự án riêng biệt. Mỗi dự án tham khảo StructureMap. Lớp dịch vụ biết về hai lớp kia nhưng BLL và DAL không biết về nhau. Tôi không muốn các nhà phát triển khác sử dụng Business Objects từ bên trong DAL và ngược lại tôi không muốn các nhà phát triển sử dụng các đối tượng Repository từ bên trong BLL. Lớp dịch vụ phối hợp tất cả những điều đó. Vì vậy, việc sử dụng đăng ký tất cả các loại theo cách này làm cho tất cả các đối tượng có sẵn trên tất cả các lớp (dự án) của chúng tôi. –
Vâng, * không * thêm một tham chiếu đến StructureMap từ bất kỳ lớp nào khác so với Gốc Thành phần ... –