Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有效地管理具有不同属性和方法的相似对象_C# - Fatal编程技术网

C# 有效地管理具有不同属性和方法的相似对象

C# 有效地管理具有不同属性和方法的相似对象,c#,C#,我正在使用C#和WPF开发一个基于文本的游戏。在这个游戏中,玩家可以建立不同的结构,当全部完成时,大概总共有20个独特的结构。每个结构将共享一些相同的属性,尽管具有不同的值(如构建成本等),并且一些结构将具有其自身独有的属性和方法。我正试图找出实现这一目标的最佳、最有效的方法 我已经探索过为所有结构使用一个类,并使用一个静态方法(带有确定所需类型的参数)来生成所选结构的实例,但我认为某些结构的独特属性和方法最终会使该方法不切实际。很明显,我可以让每个不同的结构都有自己的类,大约有20个,都是从一

我正在使用C#和WPF开发一个基于文本的游戏。在这个游戏中,玩家可以建立不同的结构,当全部完成时,大概总共有20个独特的结构。每个结构将共享一些相同的属性,尽管具有不同的值(如构建成本等),并且一些结构将具有其自身独有的属性和方法。我正试图找出实现这一目标的最佳、最有效的方法

我已经探索过为所有结构使用一个类,并使用一个静态方法(带有确定所需类型的参数)来生成所选结构的实例,但我认为某些结构的独特属性和方法最终会使该方法不切实际。很明显,我可以让每个不同的结构都有自己的类,大约有20个,都是从一个包含普通成员的接口继承的,但是我希望有一种更有效的方法来实现这一点,我忽略了这一点

目前我并不寻找任何代码,只是一些概念,可以简化这个过程,并在将来对我有所帮助。

我建议您深入研究和

继承、封装和多态性是面向对象编程的三个主要特征(或支柱)之一。继承使您能够创建重用、扩展和修改在其他类中定义的行为的新类。其成员被继承的类称为基类,继承这些成员的类称为派生类。派生类只能有一个直接基类。然而,继承是可传递的。如果ClassC派生自ClassB,而ClassB派生自ClassA,则ClassC继承在ClassB和ClassA中声明的成员


具体地说,我不会使用接口,而是使用一个抽象类(多态性),它具有多个方法的共享代码,但将它们标记为派生(继承)类可以覆盖代码。仅使用接口意味着您可能会复制大量代码。

创建一个适当的
StructureBase
类,该类包含所有通用逻辑,然后从中派生出每一个。根据您的建议,由于某些结构具有其他结构所没有的属性和方法,每种类型的结构是否仍然是它自己的类?不为每种类型的结构创建新类的唯一原因是,如果您打算进行数据驱动编程,这是一个完整的另一个世界,为每种结构创建一个类不是问题。我只是想看看是否有其他的方法,我可以看看。看来,使用基类或接口将是我的出路。@JasonD是的,谈论一个不存在的理论对象模型看起来并不是一个最佳情况。我建议您开始编码,您的大多数问题的答案将随着您的提问而变得不言而喻。考虑到他在问题中谈到了多态性,我相信他已经做到了。我只看到提到了使用接口的继承。接口与继承无关。他们只会以另一种方式进行多态,看起来这是最佳的方法,所以我会继续接受这个答案。谢谢你的帮助。