Это можно сделать с помощью одной строки кода в вашей конфигурации. Предполагая, что у вас есть это:
Объекты:
- Покупатель
- Заказ
И есть общая модель хранилища, подобная этой:
И есть сервисы приложений, которые выглядят так:
public AppService(IRepository<Customer> custRepo, IRepository<Order> orderRepo)
У вас было бы что-то вроде этого. Обратите внимание на использование сканера для подключения ваших пользовательских репозиториев.
public class SmRegistry : Registry
{
public SmRegistry()
{
For(typeof (IRepository<>))
.Use(typeof (Repository<>));
//using this will find any custom repos, like CustomerRepository : Repository<Customer>
//Scan(scanner =>
// {
// scanner.TheCallingAssembly();
// scanner.ConnectImplementationsToTypesClosing(typeof (IRepository<>));
// });
}
}
Предполагая, что ваши хранилища определены в какой-то другой сборке из вашего приложения, вы можете использовать реестры, чтобы связать все это вместе. Проверьте это сообщение:
http://blog.coreycoogan.com/2010/05/24/using-structuremap-to-configure-applications-and-components/