gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:26 25 4
gpt4 key购买 nike

我一直都遇到这个问题。假设我正在制作一个命令行界面(Java 或 C#,我认为问题是一样的,我将在此处显示 C#)。

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

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

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

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

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

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


更新:

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

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

    字符串名称 = CommandHelp.Name;

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

最佳答案

您可以考虑使用属性而不是字段。

[Command("HELP")]
class HelpCommand : ICommand
{
}

关于c# - 如何处理因实现类而异的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com