如何用c#读取类的属性

本文关键字:属性 读取 何用 | 更新日期: 2023-09-27 18:24:39

我有一个类,在那里我定义了另一个类中的一个常量。这个类将读取这些常量或该类的属性和属性的内容。类似于读取类的元数据。像这样的东西:

 namespace Ventanas._01Generales
 {
 class Gral_Constantes
 {
    public class Cat_Productos
    {
        public const String Tabla_Productos = "Cat_Productos";
        public const String Campo_Producto_ID = "Producto_ID";
    }
    public class Cat_Grupos_Productos
    {
        public const String Tabla_Grupos_Productos = "Cat_Grupos_Productos";
        public const String Campo_Grupo_Producto_ID = "Grupo_Producto_ID";
    }
 }
}

在其他类中,例如像这样的

 namespace Ventanas._01Generales
 {
 class Pinta_Ventana
 {
   public void Crea_Insert()
   {
     foreach(Properties p in Cat_Producto.Properties)
     {
       miControl.Text = p.value; //show "Cat_Grupos_Productos"
       miControl.Name = p.value; //show Tabla_Grupos_Productos
     }
   }
 }
 }

如何用c#读取类的属性

您需要Type.GetProperties(MSDN)此代码将起作用:

foreach (PropertyInfo p in typeof(Cat_Producto).GetProperties())
{
   ...
}

现在有几个注意事项:

  1. 您正在使用反射,这真的很慢,而且您正在使用它的事实表明您可能做错了什么。

  2. 如果以示例代码的方式输出,则只有最后一个属性的信息可见,因为您从未让UI更新。

  3. 您的代码实际上没有属性,它们有const字段,因此此代码不会返回任何属性。使它们成为此方法工作的属性。如果需要字段版本,可以使用Type.GetFields

看起来您想要使用System.Reflection命名空间。如果您对获取公共常量字符串的名称感兴趣,则需要使用MemberInfo。这应该让你开始:

MemberInfo[] members = typeof(MyClass).GetMembers();
        foreach(MemberInfo m in members)
        {
            //do something with m.Name
            Console.WriteLine(m.Name);
        }