C# 用Castle Windsor解析泛型

C# 用Castle Windsor解析泛型,c#,.net,castle-windsor,C#,.net,Castle Windsor,我在使用Windsor Castle 2.5解决通用接口/类时遇到问题。我有以下类和接口: 公共接口IGenericDao:IDao 公共抽象类GenericDao:IGenericDao其中T:class,new() 公共类位置dao:GenericDao、ILocationDao 对于注册,我使用以下代码行 c寄存器( 组件(类型(IGenericDao)) 。由(typeof(GenericDao))实现; c、 寄存器(Component.For().ImplementedBy());

我在使用Windsor Castle 2.5解决通用接口/类时遇到问题。我有以下类和接口:

公共接口IGenericDao:IDao
公共抽象类GenericDao:IGenericDao其中T:class,new()
公共类位置dao:GenericDao、ILocationDao
对于注册,我使用以下代码行

c寄存器(
组件(类型(IGenericDao))
。由(typeof(GenericDao))实现;
c、 寄存器(Component.For().ImplementedBy());
现在,当我试图解析
ILocationDao

var i=c.Resolve();
返回值是一个
Castle.Proxies.ILocationDaoProxy
,我无法将其转换为
LocationDao

当我从“LocationDao”类中删除
GenericDao

公共类位置dao:ILocationDao
一切正常。所以我猜我的注册有问题


你能帮我吗?

如果你告诉容器你想要
ILocationDao
,你不应该将结果强制转换到
LocationDao
,只需将其用作
ILocationDao


如果您确信使用该接口还不够,请将
LocationDao
注册为
LocationDao
,并解决该问题。

@weston这是的实现,这是它的实现。@weston,如果
LocationDao
不会实现所有
抽象
方法,它将无法编译。@svick是的,很抱歉你是对的,忽略我的评论