C# - 从静态类获取静态属性的值 [英] C# - Get values of static properties from static class
问题描述
我试图在一个简单的静态类中遍历一些静态属性,以便用它们的值填充组合框,但遇到了困难.
I'm trying to loop through some static properties in a simple static class in order to populate a combo box with their values, but am having difficulties.
这是一个简单的类:
public static MyStaticClass()
{
public static string property1 = "NumberOne";
public static string property2 = "NumberTwo";
public static string property3 = "NumberThree";
}
... 以及尝试检索值的代码:
... and the code attempting to retrieve the values:
Type myType = typeof(MyStaticClass);
PropertyInfo[] properties = myType.GetProperties(
BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
foreach (PropertyInfo property in properties)
{
MyComboBox.Items.Add(property.GetValue(myType, null).ToString());
}
如果我不提供任何绑定标志,那么我会得到大约 57 个属性,包括 System.Reflection.Module Module 之类的东西以及我不关心的各种其他继承的东西.我的 3 个声明属性不存在.
If I don't supply any binding flags then I get about 57 properties including things like System.Reflection.Module Module and all sorts of other inherited things I don't care about. My 3 declared properties are not present.
如果我提供其他标志的各种组合,那么它总是返回 0 属性.太好了.
If I supply various combinations of other flags then it always returns 0 properties. Great.
我的静态类实际上是在另一个非静态类中声明的重要吗?
Does it matter that my static class is actually declared within another non-static class?
我做错了什么?
推荐答案
问题在于 property1..3
不是属性,而是字段.
The problem is that property1..3
are not properties, but fields.
要使它们的属性更改为:
To make them properties change them to:
private static string _property1 = "NumberOne";
public static string property1
{
get { return _property1; }
set { _property1 = value; }
}
或者使用自动属性并在类的静态构造函数中初始化它们的值:
Or use auto properties and initialize their values in the static constructor of the class:
public static string property1 { get; set; }
static MyStaticClass()
{
property1 = "NumberOne";
}
...或者使用 myType.GetFields(...)
如果字段是您想要使用的.
...or use myType.GetFields(...)
if fields are what you want to use.
这篇关于C# - 从静态类获取静态属性的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!