C# 避免许多继承类

C# 避免许多继承类,c#,oop,interface,types,abstract-class,C#,Oop,Interface,Types,Abstract Class,假设我有这个类(只是一个例子): 有许多不同类型的数据包,每个数据包都继承自该类,并且每个数据包类型可以具有任意数量的不同类型的属性 有没有一种方法可以实现每种类型的数据包而不使用继承? 我考虑过使用一个属性,比如List\u typessspecificvalues——我知道它不会编译,但我不知道如何表达我的意思 我需要避免为每种类型的数据包创建一个继承类,因为大约有50种类型——或者我只是在偷懒??听起来你应该创建单独的类,是的 但是,我不确定是否要让它们从这个类派生。听起来这应该是一个标题

假设我有这个类(只是一个例子):

有许多不同类型的数据包,每个数据包都继承自该类,并且每个数据包类型可以具有任意数量的不同类型的属性

有没有一种方法可以实现每种类型的数据包而不使用继承?

我考虑过使用一个属性,比如
List\u typessspecificvalues
——我知道它不会编译,但我不知道如何表达我的意思

我需要避免为每种类型的数据包创建一个继承类,因为大约有50种类型——或者我只是在偷懒??

听起来你应该创建单独的类,是的


但是,我不确定是否要让它们从这个类派生。听起来这应该是一个
标题
类(甚至可能是一个结构),然后您可以有多个类,每个类都包含一个
标题

,根据您的简要描述,听起来更像是结构而不是类。再看看你50多个不同的定义,看看它们到底有什么不同。例如,如果一半以一种方式处理,另一半以另一种方式处理,那么可能您实际上只有两个类知道如何处理不同的结构。

您需要问自己:单独使用“数据包”有什么意义吗?。您是否会在所有/大多数使用中访问基类的属性

例如,假设您有:

public class CommPacket : Packet
{
    public string Message { get; set; }
}

访问CommPacket.Length是典型的吗?或者将CommPacket传递给接受数据包作为参数的类是否有意义?如果这两个问题的答案都是肯定的,那么应该使用基类

如果您有这么多不同类型的类,它们之间有许多不同的特征,那么您不应该使用继承,而应该使用组合

阅读这篇文章比我能更好地解释它

编辑

更好地阅读本书中关于装饰图案的章节

为了确保我能让你注意到这本书,这里有一些截图:

继承

作文

谢谢。创建50多个新类来表示看似如此简单的内容似乎是一个糟糕的设计。@rmx:从声音上看,您正在表示50种不同类型的数据。有50种不同的类型听起来并不是不合理的。@Skeet:我不同意你的观点,因为这是一个过度使用继承的明显例子。创建这么多行为类似的类是不合理的。相反,它比只有一个包的“基类”和许多向现有包类添加属性的装饰器(模式)类要好。@Carlos:你注意到我建议他不使用继承吗?我建议用作文代替。你能准确地引用我的回答中你不同意的地方吗?@Skeete:我的不同意不在答案中,而在评论中:50种不同类型的部分,对于我来说,有这么多的类在拥有或不拥有某些属性方面是不合理的。无论如何,我误读了答案,我的错误:(
public class CommPacket : Packet
{
    public string Message { get; set; }
}