C# - 从静态类获取静态属性的值 [英] C# - Get values of static properties from static class

查看:47
本文介绍了C# - 从静态类获取静态属性的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在一个简单的静态类中遍历一些静态属性,以便用它们的值填充组合框,但遇到了困难.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆