我刚刚重构了我的服务层中几乎所有的类,以从 ServiceBase
继承,以减少初始化数据访问和几乎所有服务相同的其他方面的重复,但我在我的当我到达我的 RoleService
时进行跟踪,因为它必须从 RoleProvider
继承,以便我可以将其配置为我的网站的“官方”角色提供者。
现在已经是深夜了,咖啡因正在形成,但我想知道有没有办法用动态对象代替派生对象,并将基对象的所有成员添加到“派生”对象,在运行时,而不是编译时。
这有可能吗?
最佳答案
不,DynamicObject
不允许您从两个具体类派生,这就是多重继承,而 C# 不支持。无论是动态的还是静态的,您面临的问题都是相同的。如果您有 Base1
和 Base2
彼此无关,那么只要您从 Base1
派生 Derived
,Derived is Base2
不可能是真的。相反,您可以满足于 Derived is IBase2
。
我建议您使用:
连同多个接口(interface)或一个具体推导和一个接口(interface)。要模拟多重继承,您:
- 创建接口(interface)而不是基础
- 实现接口(interface)而不是从基础派生
- 创建一个实现类来完成您想在基础中完成的工作
- 通过将所有接口(interface)调用转发给实现者的实例来“桥接”实现者
这将您的实现类中的代码量限制为每个接口(interface)方法或属性只有一个转发调用。
关于c# - 我能以某种方式使用动态对象模拟多重继承吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723039/