我刚刚重构我的服务层中的几乎所有类都要从ServiceBase
继承,以减少初始化数据访问中的重复以及与几乎所有服务相同的其他方面,但我在我的轨道上停止了到达我的RoleService
,因为它必须从RoleProvider
继承,以便我可以将其配置为我的网站的“官方”角色提供者。
现在已经有点深夜了,咖啡因正在形式上,但我想知道是否有任何方法可以使用动态对象代替派生对象,并将基础对象的所有成员添加到'derived'对象,在运行时,而不是编译时。
这甚至是远程可能吗?
答案 0 :(得分:3)
不,DynamicObject
不允许您从两个具体类派生,这是多重继承,以及C#不支持的。您遇到的问题无论是相同的方式,动态还是静态。如果您的Base1
和Base2
彼此无关,那么只要您从Derived
派生Base1
,就无法Derived is Base2
永远都是真的。相反,你可以选择Derived is IBase2
。
我建议你使用:
与多个接口或一个具体派生和一个接口一起使用。要模拟多重继承:
这会将实现类中的代码量限制为每个接口方法或属性只有一个转发调用。
答案 1 :(得分:1)
您应该可以使用DynamicObject
课程。
答案 2 :(得分:1)
Dunno如果你真的需要在类级别遇到麻烦,但是这里有一些资源可能有助于将你的角色提供程序设置为WCF服务:
http://msdn.microsoft.com/en-us/library/aa702542.aspx
编辑---- 这篇文章也提到了这里: Can I create a custom roleprovider through a WCF service?