Если у меня есть интерфейс:
public interface IRepository<T>
И абстрактный класс:
public abstract class LinqToSqlRepository<T, TContext> : IRepository<T>
where T : class
where TContext : DataContext
И целый ряд реализаций IRepository / LinqToSqlRepository (например, AccountRepository, ContactRepository и т. Д.), Каков наилучший способ использования StructureMap (2.5.3) для их общего соединения?
например, я хочу передать этот код:
[Test]
public void ShouldWireUpAccountRepositories
{
var accountRepo = ObjectFactory.GetInstance<IRepository<Account>>();
Assert.IsInstanceOf<AccountRepository>(accountRepo);
}
Без явного написания этого:
ObjectFactory.Configure(x => x.ForRequestedType<IRepository<Account>>()
.TheDefaultIsConcreteType<AccountRepository>());
В прошлом мы всегда создавали определенный интерфейс для каждого репозитория, унаследованный от общего, и использовали сканер по умолчанию для автоматического подключения всех этих экземпляров, но я хотел бы иметь возможность специально запросить IRepository<Account>
без загромождения проекта дополнительными интерфейсами / конфигурациями.