我有一个C#基类,我是关联信息与每类型(而不是每个实例)的基础上。基本上,我希望所有的子类都提供一个表示类型的Icon和FriendlyName。我想不是必须创建一个类型实例来获取这些信息,我想要求所有的子类都提供这些信息。理想情况下,它将在基础派生的界面中。提供继承的静态属性(概念上)
我试着使用一个类属性,但它需要一个常量值,所以虽然我可以设置FriendlyName,但我无法设置图标,也无法看到一种方法来使属性成为必需,所以儿童班可以逃脱不了(直到跑步时间)。
我在孩子可以隐藏的基础上添加了一个静态属性,但这有点丑陋,基底中的值真的很荒谬。它不知道孩子的名字是什么。我可以在该属性中进行基本投掷,但同样,在运行时间之前不会被捕获。
任何人对我如何实现这样的东西有任何想法?有没有我失踪的模式?任何开箱即用的想法都会受到鼓励。
编辑:真的,我需要能够沿继承树请求类属性,并且能够使用嵌入式资源来设置这些属性。所有将要返回的信息都是静态的,并且在编译时已知。我无法想出一个很好的揭示它的方法。
编辑2:这里是什么,我需要更具体的例子:
假设我有一个基类:
abstract class Vehicle { ... }
然后我有两个孩子:
class Car : Vehicle { ... }
class Truck : Vehicle { ... }
我希望能够获得代表“Car”或“Truck”的图标,而无需创建一个(la Car.Icon)的实例,因为所有车辆一个给定的类型都将具有相同的图标。
我也希望确保所有车辆派生的类型公开相同的方式来获得该图标,以防有人在未来走来,并增加了一类新的
class Airplane : Vehicle { ... }
编辑3:为什么我需要这个?那么我们有一个可以插入插件的应用程序。插件由类型定义,当类型被加载时,我们向用户显示图标和名称。当他们点击图标时,它会创建该类型的实例(并为它们提供一个命名实例的对话框等)。我不需要或不想创建一个类型的实例来获取图标。
是的,这是我走的路线,但我只是觉得很脏。不得不创建一个实例来获取信息会增加如何使用信息的复杂性。 – ctacke 2009-01-07 21:54:46