相关疑难解决方法(0)

如何处理因实现类而异的静态字段

我一直都遇到这个问题。假设我正在创建命令行界面(Java或C#,问题与我想的相同,我将在此处显示C#)。

  1. 我定义一个接口ICommand
  2. 我创建了一个抽象基类CommandBase,它实现了ICommand,以包含通用代码。
  3. 我创建了几个实现类,每个实现类都扩展了基类(并通过扩展了接口)。

现在-假设接口指定所有命令都实现Name属性和Execute方法...

对于Name,我的每个实例类都必须返回一个字符串,该字符串是该命令的名称。该字符串(“ HELP”,“ PRINT”等)对于相关类是静态的。我希望能够做的是定义:

公共抽象静态常量字符串名称;

但是(很遗憾)您不能在接口中定义静态成员。

我多年来一直在为这个问题而苦苦挣扎(几乎在我拥有类似课程的家庭中任何地方),因此下面将发表我自己的3种可能的解决方案,供您投票。但是,由于它们都不是理想的,我希望有人能发布一个更优雅的解决方案。


更新:

  1. 我无法使代码格式正常工作(Safari / Mac?)。道歉。
  2. 我使用的示例很简单。在现实生活中,有时会有数十个实现类和这种半静态类型的多个字段(即实现类为静态)。

  3. 我忘了提-理想情况下,我希望能够静态查询此信息:

    字符串名称= CommandHelp.Name;

在我提出的3个解决方案中,有2个要求实例化该类,然后才能发现此静态信息,这很丑陋。

c# java

5
推荐指数
1
解决办法
1787
查看次数

标签 统计

c# ×1

java ×1