Castle.Windsor 注册具有抽象的通用类型
Castle.Windsor registering for Generic Types with abstraction
我有两个抽象 类 和一个 Dao 接口:
public abstract class DBEntity
public abstract class GenericDao<T> : IDao<T> where T : DBEntity
public interface IDao<T> where T : DBEntity
我正在尝试在我的服务构造函数中解析 IDao<ModelClass.Model>
:
this.cvDao = IoC.Resolve<IDao<CV>>();
问题从这里开始。
我正在尝试注册 IDao<>
并且我已经使用了一些方法,例如:
container.Register(Component.For(typeof(IDao<>))
.ImplementedBy(typeof(GenericDao<>))
.LifestylePerWebRequest());
container.Register(AllTypes.FromAssemblyNamed("cvdb.Dao")
.BasedOn(typeof(IDao<>))
.WithService.Base());
但是所有这些方法都会导致相同的异常并产生相同的效果。我的应用程序有一个无限循环和 WhosebugException
。当我调试我的代码时,我发现我无法注册 IDao<>
.
GenericDao 是一个抽象class。我应该尝试解析从它派生的 class 或将其类型更改为非抽象 class 以创建实例。
我有两个抽象 类 和一个 Dao 接口:
public abstract class DBEntity
public abstract class GenericDao<T> : IDao<T> where T : DBEntity
public interface IDao<T> where T : DBEntity
我正在尝试在我的服务构造函数中解析 IDao<ModelClass.Model>
:
this.cvDao = IoC.Resolve<IDao<CV>>();
问题从这里开始。
我正在尝试注册 IDao<>
并且我已经使用了一些方法,例如:
container.Register(Component.For(typeof(IDao<>))
.ImplementedBy(typeof(GenericDao<>))
.LifestylePerWebRequest());
container.Register(AllTypes.FromAssemblyNamed("cvdb.Dao")
.BasedOn(typeof(IDao<>))
.WithService.Base());
但是所有这些方法都会导致相同的异常并产生相同的效果。我的应用程序有一个无限循环和 WhosebugException
。当我调试我的代码时,我发现我无法注册 IDao<>
.
GenericDao 是一个抽象class。我应该尝试解析从它派生的 class 或将其类型更改为非抽象 class 以创建实例。