c# - C# : What is the purist way of achieving what I am trying to do? 中的多重继承

标签 c# .net

我明白 C# 中没有多重继承。但是,我遇到了一种我真的希望它存在的情况。我正在创建一个自定义类,它需要我从 CLR 类型继承并覆盖一些方法。不幸的是,我正在创建其中几个非常相似的。为了 DRY,我真的很想将通用功能移动到基类,但我需要从 2 个类继承。我可以使用接口(interface)(事实上我现在正在使用一个接口(interface))但这只解决了一半的问题,因为方法实现仍然需要在多个自定义类中重复。

实现我想要做的事情的最纯粹的方法是什么?

编辑:

这是一个通用的代码示例

public class CustomTypeOne : CLRType
{
   public override void Execute(HttpContext context)
   {
        //Some code that's similar across CustomTypeOne, CustomTypeTwo etc
   }

   public void DoStuff()
   {
       //Same for all CustomTypes and can be part of a base class
   }

   //More methods
}

public class CustomTypeTwo : CLRType
{
   public override void Execute(HttpContext context)
   {
        //Some code that's similar across CustomTypeOne, CustomTypeTwo etc
   }

   public void DoStuff()
   {
       //Same for all CustomTypes and can be part of a base class
   }

   //More methods

}

最佳答案

有时我觉得多重继承可以挽救局面,但我意识到它确实使实现和可维护性更具挑战性。 MI 在继承的类中有效地合并了公共(public)和 protected 命名空间,这可能会导致一些您不需要的歧义和复杂性。

所以,而不是 IS-A关系,通常我更乐意实现 HAS-A关系。我本应继承的类将改为类中的数据成员。

关于c# - C# : What is the purist way of achieving what I am trying to do? 中的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195786/

相关文章:

c# - 覆盖 Visual Studio 对组件派生类的处理

c# - Jquery ddl更改事件未触发

.net - 在 VS 2010 中禁用 VB.NET 10 功能

c# - 内部类上的公共(public)方法与内部方法

c# - 是否可以创建一个可以同时作为独立应用程序和 IIS 内部托管的 OWIN 应用程序?

c# - 如何编写单元测试以确定对象是否可以被垃圾回收?

c# - 与此 C# 代码等效的 VB 是什么?

c# - 不使用 IntPtr 的 SafeHandle

c# - Expression.Call 中的 ToUpper()

c# - 调试器尝试使用错误的程序集名称启动程序集