gpt4 book ai didi

c# - 使用字符串变量访问静态类成员(字符串包含静态类的名称)

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:24 25 4
gpt4 key购买 nike

我很困惑是否有任何方法可以使用在字符串变量中定义的静态类名来访问静态类属性值示例:

我有一个像下面这样的静态类

public static class CoreConstants
{
public const string HostAddress= "someaddress";
}

我有一个像

这样的字符串变量
private string staticClassName="CoreConstants";

那么有什么方法可以使用字符串获取HostAddress字段的值吗?

我知道如果类是普通类,我们可以使用 Activator.CreateInstance() 方法,使用实例我们可以获得值。但是如果类是静态类呢?

我的真实情况就像我有几个静态类,它们为不同的语言保存常量。每个请求都会传递一个语言指示符字符串,因此我需要使用该字符串从特定的静态类中获取准确的消息。

最佳答案

您首先必须获取属性所属的类型:

var type = Type.GetType("CoreConstants");

请注意,您需要一个 fully qualified name ,包括定义类型的命名空间和程序集。否则,类型加载器将只查找 mscorlib,使 GetType 返回 null

如果您有类型,只需调用 Type.GetPropertyType.GetField,具体取决于您要访问的是字段还是属性:

var field = type?.GetField("HostAddress");

最终得到静态字段的值:

var value = field?.GetValue(null);

由于您的字段是static,因此提供给GetValue 的参数是null。如果它是一个实例字段,您必须提供实例。

关于c# - 使用字符串变量访问静态类成员(字符串包含静态类的名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123075/

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