Unity 容器解析部分 类
Unity container resolve with partial classes
我在使用 Unity 注入具有两个部分 classes 的依赖项时遇到问题。这就是我所做的:
public partial class MyDbContext : IMyDbContext
{
// code
}
public partial class MyDbContext : IMyDbContext
{
// code
}
public interface IMyDbContext
{
// code
}
var container = new UnityContainer();
container.RegisterType<IMyDbContext,
MyDbContext>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
使用上面的代码,我得到一个关于我的数据库为空的异常。但是,如果我删除一个部分 class,那么我将只有一个部分 class,一切正常。如果您能对此表示满意,我将不胜感激。
编辑:
当我处于调试模式时,Unit 容器的 GetService 方法捕获异常 ResolutionFailedException。
删除其中一个接口。其中一个 classes 实现了它,所以另一个不能。请记住,部分 class 是在单个 class 中编译在一起的,因此您不能让两个部分都实现相同的接口,因为一旦合并,就不知道哪个部分正在实际实现它。
我通过注册实例而不是类型解决了这个问题。
但是,欢迎任何其他解决方案。
var container = new UnityContainer();
MyDbContext context = new MyDbContext()
container.RegisterInstance<IMyDbContext>(context);
config.DependencyResolver = new UnityResolver(container);
我在使用 Unity 注入具有两个部分 classes 的依赖项时遇到问题。这就是我所做的:
public partial class MyDbContext : IMyDbContext
{
// code
}
public partial class MyDbContext : IMyDbContext
{
// code
}
public interface IMyDbContext
{
// code
}
var container = new UnityContainer();
container.RegisterType<IMyDbContext,
MyDbContext>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
使用上面的代码,我得到一个关于我的数据库为空的异常。但是,如果我删除一个部分 class,那么我将只有一个部分 class,一切正常。如果您能对此表示满意,我将不胜感激。
编辑: 当我处于调试模式时,Unit 容器的 GetService 方法捕获异常 ResolutionFailedException。
删除其中一个接口。其中一个 classes 实现了它,所以另一个不能。请记住,部分 class 是在单个 class 中编译在一起的,因此您不能让两个部分都实现相同的接口,因为一旦合并,就不知道哪个部分正在实际实现它。
我通过注册实例而不是类型解决了这个问题。 但是,欢迎任何其他解决方案。
var container = new UnityContainer();
MyDbContext context = new MyDbContext()
container.RegisterInstance<IMyDbContext>(context);
config.DependencyResolver = new UnityResolver(container);