如何声明静态类型的静态属性?实现层级配置类的访问需求
解决方案
你遇到的报错是因为C#不允许把静态类作为字段类型——静态类无法被实例化,自然不能声明static Section1 Params1这样的字段来存储它的实例。要实现Config.Params1.Prop1的访问形式,有两种简洁的方法:
方法一:嵌套静态类(推荐)
直接把Params1作为Config的嵌套静态类,天然支持层级访问,代码简洁规范:
public static class Config { // 嵌套静态类,作为Config的层级节点 public static class Params1 { public static string Prop1 => "..."; public static string Prop2 => "..."; } // 可按需添加其他参数组 public static class Params2 { public static int MaxCount => 100; public static bool IsEnabled => true; } }
使用时直接写Config.Params1.Prop1即可,完全匹配你的需求。
方法二:非静态类+静态实例
如果不想用嵌套类,可将Section1改为非静态类,再在Config中声明一个静态只读实例:
public static class Config { // 全局唯一的静态只读实例 public static readonly Section1 Params1 = new Section1(); } // 移除static修饰符,改为普通类 public class Section1 { // 这里可以是实例属性,也可以定义为静态属性 public string Prop1 => "..."; public string Prop2 => "..."; }
这种方式同样支持Config.Params1.Prop1的访问形式,适合需要给Section1添加实例逻辑的场景。
内容的提问来源于stack exchange,提问作者theateist
相关产品推荐
相关产品推荐

