Так что вопрос, когда я заявляю:Unity с таким же интерфейсом, несколько заводов
[Dependency]
public AuthenticationService _authenticationServices { get; set; }
_authenticationServices
будет постоянно оставаться null
. На него не ссылаются, что приведет к выводу Null Reference Exception. Я предполагаю, что проблема вытекает из моего файла конфигурации Unity:
container.RegisterType<ICrudFactory, ZNodeDataContextFactory>();
container.RegisterType<ICrudFactory, MincronDataContextFactory>();
Поскольку они оба используют один и тот же интерфейс, но отдельная конкретная реализация. Реализация осуществляется следующим образом:
public interface ICrud : IDisposable
{
// Method's to be exposed, via general repository.
}
public interface ICrudFactory
{
ICrud Create();
}
public ZNodeDataContext : DbContext, ICrud
{
// Concrete implementation.
}
public MincronDataContext : DbContext, ICrud
{
// Concrete implementation.
}
public ZNodeDataContextFactory : ICrudFactory
{
ICrud ICrudFactory.Create()
{
return ZNodeDataContext();
}
}
public MincronDataContextFactory : ICrudFactory
{
ICrud ICrudFactory.Create()
{
return MincronDataContext();
}
}
public class AuthenticationService
{
private readonly ICrudFactory _factory;
public AuthenticationService(ICrudFactory factory)
{
_factory = factory;
}
public void Sample()
{
using(var context = _factory.Create())
context.Method(...);
}
}
Я хотел бы сохранить эту структуру, чтобы избежать дублирования кода.
Как работает «Аутентификация», связанная с заводами? –
@YacoubMassad Отредактировано для включения службы аутентификации. – Greg
Какую реализацию 'ICrudFactory' вы хотите ввести в' AuthenticationService'? –