Как зарегистрировать закрытый тип, чтобы экземпляры generic создавались с использованием жизненного цикла HybridHttpOrThreadLocalScoped?Регистрация закрытых типов с использованием сканера StructureMap
Мои классы:
public interface IBaseService
{
}
public interface IAccountService
{
void Save(Account entry);
Account GetById(string id);
List<Account> GetList();
void Delete(string id);
bool Exists(string id);
}
public interface IClientService
{
void Save(Client entry);
Client GetById(string id);
List<Client> GetList();
void Delete(string id);
bool Exists(string id);
}
public class AccountService : IBaseService, IAccountService
{
Some code for managing accounts
}
public class ClientService : IBaseService, IClientService
{
Some code for managing clients
}
Dependency распознаватель:
public StructureMapContainer(IContainer container)
{
_container = container;
_container.Configure(x => x.Scan(y =>
{
y.AssembliesFromApplicationBaseDirectory();
y.WithDefaultConventions();
y.LookForRegistries();
y.ConnectImplementationsToTypesClosing(typeof(IService<>))
.OnAddedPluginTypes(t => t.HybridHttpOrThreadLocalScoped());
}));
}
Что синтаксис в распознаватель для автоматического создания экземпляров IBaseService? Использование ConnectImplementationsToTypesClosing работает только для открытых дженериков. Нужно ли мне использовать распознаватель? Есть ли лучший способ зарегистрировать типы?
На данный момент, это то, как я amhandling их регистрации:
container.Configure(x =>
{
x.For<IClientService>()
.HybridHttpOrThreadLocalScoped()
.Use(new ClientService());
x.For<IEmailAddressService>()
.HybridHttpOrThreadLocalScoped()
.Use(new EmailAddressService());
x.For<IAccountService>()
.HybridHttpOrThreadLocalScoped()
.Use(new AccountService());
});
Постараюсь это. Благодаря! – rboarman