所以,问题是,当我宣布:统一使用相同的接口,多个工厂
[Dependency]
public AuthenticationService _authenticationServices { get; set; }
的_authenticationServices
将不断保持null
。它没有被引用,它会抛出一个空引用异常。我假设这个问题源于我的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(...);
}
}
我想保持这种结构,以避免代码重复。
'AuthenticationService'与工厂有什么关系? –
@YacoubMassad编辑为包含验证服务。 – Greg
你想注入'AuthenticationService'的哪个'ICrudFactory'实现? –