我一直都在遇到这个问题。假设我正在制作命令行界面(Java或C#,问题与我想的相同,我将在此处显示C#)。如何处理因实施类而异的静态字段
- 我定义一个接口的ICommand
- 我创建一个抽象基类CommandBase它实现ICommand的,以包含通用代码。
- 我创建了几个实现类,每个实现类都扩展了基类(以及扩展接口)。
现在 - 假设接口指定了所有的命令实现Name属性和Execute方法...
对于每名我的实例类必须返回一个字符串,该命令的名称。该字符串(“HELP”,“PRINT”等)对于相关类是静态的。我希望能够做的是定义:
public abstract static const String Name;
但是(可惜)你不能在接口中定义静态成员。
我现在这个问题奋斗多年(几乎任何地方,我有一个类似的家庭类)等将张贴下面您的投票我自己的3个可能的解决方案。然而,因为他们都不是理想的,我希望有人会发布更优雅的解决方案。
UPDATE:
- 我不能得到的代码格式才能正常工作(Safari浏览器/ Mac吗?)。道歉。
我正在使用的示例很简单。在现实生活中,有时会有几十个实现类和这个半静态类型的几个字段(即对于实现类是静态的)。
我忘了提 - 理想我希望能够查询这个信息静态:
字符串名称= CommandHelp.Name;
我3级提出的解决方案的2需要的类实例化之前,你可以找到这个静态信息这是丑陋的。
这不是在说原来的问题,但他/他想要一个字段,以便他/她可以绑定到它在WPF中。 – 2010-10-20 07:32:23