我有多个类需要访问同一组常量.目前,我在一个单独的类中定义了这些常量,如下所示:

public  class ConfigurationConstants
{
    public const string Const1= "const1";
    public const string Const2= "Const2";
}

我正在考虑在其他类中访问这些常量的两种方法:

  1. 使用继承,就像下面的代码:
public class DeleteQueryHandler : ConfigurationConstants, IRequestHandler<DeleteQuery, ErrorOr<Deleted>>
{
}


public class CreateQueryHandler : ConfigurationConstants, IRequestHandler<CreateQuery, ErrorOr<Deleted>>
{
}
  1. 使用依赖注入(DI),通过将CompatiationConstants实例传递给类的构造函数,如下所示:
public class DeleteQueryHandler : ConfigurationConstants, IRequestHandler<DeleteQuery, ErrorOr<Deleted>>
{
  public DeleteQueryHandler (ConfigurationConstants)
  {..}
}

我不确定哪种方法在最佳实践、可维护性和性能方面更合适.此外,我愿意接受任何其他建议来实现这个目标.

推荐答案

如果它们真的是常数,最简单的方法就是使用ConfigurationConstants.Const1.对常量使用"继承"几乎没有任何好处,我甚至不知道依赖注入如何对常量起作用.

注意,您可能需要考虑常量值的生存期.如果常量值被某个第三方使用,它可能意味着"永远不会改变".如果它只在内部使用,它可能意味着"对于这个版本的应用程序来说是常数".如果您打算表示"当前应用程序实例的常数",那么您可能应该使用只读配置对象并使用依赖注入将配置对象传递给用户.

Csharp相关问答推荐

下拉图片点击MudBlazor

在C#中使用in修饰符

编写DataAnnotations自定义验证器的多种方法

一种安全的方式来存储SSH凭证(MAUI/C#应用程序)

图形API基于appid列表检索多个应用程序

如何在C#中将对象[*,*]直接转换为字符串[*,*]?

Polly v8—使用PredicateBuilder重试特定的状态代码

共享暂存/生产环境中Azure事件中心的建议配置

NET8 MAUI并部署到真实设备上进行测试

是否可以将Collectionview中的数组与ObservableCollection绑定?

如何将%{v_扩展}转换为%{v_扩展}>>

如何从非异步任务中正确返回TypeResult

未显示详细信息的弹出对话框

我想根据姓氏按字母顺序对包含150行徽章编号、姓氏、名字、地址等的文件进行排序.e

try 创建一个C#程序,该程序使用自动实现的属性、覆盖ToString()并使用子类

为什么我可以在注册表编辑器中更改值,但不能在以管理员身份运行的C#表单应用程序中更改?

正在try 将自定义字体添加到我的控制台应用程序

如何将 colored颜色 转换为KnownColor名称?

项目参考和方法签名问题

使用SQL Server 2022+时,我是否必须将代码从SqlConnection类对象中迁移出来?