You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何不实例化类即可获取public static静态属性的值

问题解答

核心问题出在两点:

  1. 你代码定义的SomeInfo是字段(field),不是属性(property),调用GetProperty无法匹配到该成员,得到的someInfoProperty实际为null。
  2. 静态成员调用GetValue时不需要传入实例,直接传null作为第一个参数即可。

情况1:保持SomeInfo为字段的实现

使用GetField代替GetProperty获取成员,示例代码如下:

var myClass = Type.GetType("MyNamespace.MyClass");
// 匹配公共静态字段
var someInfoField = myClass.GetField("SomeInfo", BindingFlags.Public | BindingFlags.Static);
// 静态成员GetValue第一个参数传null
string result = someInfoField.GetValue(null) as string;

此时result就是你要的Lorem Ipsum值。


情况2:如果后续将SomeInfo调整为属性

如果后续把代码修改为属性实现:

public static string SomeInfo { get; set; } = "Lorem Ipsum";

保留原GetProperty逻辑,仅修改GetValue的参数即可:

var myClass = Type.GetType("MyNamespace.MyClass");
var someInfoProperty = myClass.GetProperty("SomeInfo", BindingFlags.Public | BindingFlags.Static);
string result = someInfoProperty.GetValue(null) as string;

注意事项

  • 调用Type.GetType时需要传入类的完整限定名,如果类位于当前程序集外,还需要补充程序集标识,否则会返回null。
  • 获取成员后建议增加空判断逻辑,避免成员不存在时抛出空引用异常。

内容的提问来源于stack exchange,提问作者realmikep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 20:45:07