Castle.Windsor注册具有抽象的泛型类型

时间:2015-01-13 07:31:16

标签: c# .net inversion-of-control castle-windsor ioc-container

我有两个抽象类和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());

但是所有这些方法都会导致相同的异常并产生相同的效果。我的应用程序有一个无限循环StackOverFlowException。当我调试我的代码时,我发现我无法注册IDao<>

1 个答案:

答案 0 :(得分:0)

GenericDao是一个抽象类。我应该尝试解析一个派生自它的类,或者将它的类型更改为非抽象类来创建实例。