如何用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
}
}
}
}
您需要Type.GetProperties
(MSDN)此代码将起作用:
foreach (PropertyInfo p in typeof(Cat_Producto).GetProperties())
{
...
}
现在有几个注意事项:
您正在使用反射,这真的很慢,而且您正在使用它的事实表明您可能做错了什么。
如果以示例代码的方式输出,则只有最后一个属性的信息可见,因为您从未让UI更新。
您的代码实际上没有属性,它们有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);
}