【发布时间】:2015-01-13 13:51:04
【问题描述】:
假设我想要一个主类,其中包含许多子类,子类都具有相同的属性/方法,并且我需要在许多不同的其他代码部分中访问它们。
示例: 主类:国家
子类/项目:德国、荷兰、大不列颠、法国……
然后为每个国家/地区定义单独的属性,例如人口、单位、...
所以稍后在代码中我可以像访问它一样访问它
if (Country.France.Units < Country.Germany.Units)
Console.WriteLine("foo");
编辑:感谢大家的回答,CodeCaster 的解决方案非常适合我的目的。其他的也是对的,通过字符串值解析字典只是少了一些工作......
【问题讨论】:
-
看起来有点奇怪的设计 - 您将使用的每个国家/地区的子类。为什么不直接使用
var france = new Country() {Name = "France", Units = ...}之类的东西? -
是什么让你认为你需要一个静态类?
-
您可以从您的每个子类的主类继承,这样 MustInherit 类的属性(在本例中为 Country)成为每个其他类的属性(即法国继承 Country,德国继承国家等)
-
我同意安迪的观点,只需为每个国家/地区实例化一个主类的新实例。
-
其实这几乎是一个类实例化的教科书示例。您将有一个国家/地区类,每个特定国家/地区都是该类的一个实例。包括名称是好的(如果需要/需要,您可以覆盖 ToString())并且您可以命名实例,因此您可以先使用
Country France = new Country()而不是Country.France.Units,然后您可以只说if (France.Units < Germany.Units)。跨度>