从 C# 中的类中获取所有属性名称

陈允勋

我有一个名称为 c_invPrd 的类,其中包含以下代码。

public  readonly string ITEM_NO                                     = "ITEM_NO";
public  readonly string PRD_INDEX                                   = "PRD_INDEX";
public  readonly string PRD_CD                                      = "PRD_CD";
public  readonly string PRD_DESC                                    = "PRD_DESC";
public  readonly string PRINCIPAL_IND                               = "PRINCIPAL_IND";
public  readonly string PROMO_IND                                   = "PROMO_IND";
public  readonly string PRDCAT1_CD                                  = "PRDCAT1_CD";
public  readonly string PRDCAT2_CD                                  = "PRDCAT2_CD";
public  readonly string PRDCAT3_CD                                  = "PRDCAT3_CD";
public  readonly string PRDCAT4_CD                                  = "PRDCAT4_CD";
public  readonly string PRDCAT5_CD                                  = "PRDCAT5_CD";
public  readonly string PRDCAT6_CD                                  = "PRDCAT6_CD";
public  readonly string PRDCAT7_CD                                  = "PRDCAT7_CD";
public  readonly string PRDCAT8_CD                                  = "PRDCAT8_CD";
public  readonly string PRDCAT9_CD                                  = "PRDCAT9_CD";
public  readonly string PRDCAT10_CD                                 = "PRDCAT10_CD";


private readonly Type   typeof_ITEM_NO                              = typeof(int);
private readonly Type   typeof_PRD_INDEX                            = typeof(int);
private readonly Type   typeof_PRD_CD                               = typeof(string);
private readonly Type   typeof_PRD_DESC                             = typeof(string);
private readonly Type   typeof_PRINCIPAL_IND                        = typeof(string);
private readonly Type   typeof_PROMO_IND                            = typeof(string);
private readonly Type   typeof_PRDCAT1_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT2_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT3_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT4_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT5_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT6_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT7_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT8_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT9_CD                           = typeof(string);
private readonly Type   typeof_PRDCAT10_CD                          = typeof(string);


public c_invIndPrd(DMSFW.Objects.Argument arg)
    : base (arg) {
}

public c_invIndPrd()
{

}

如何创建列表 C# 以通过访问 c_invPrd 类将 ITEM_NO、PRD_INDEX、PRD_CD、PRD_DESC、PRINCIPAL_IND 等所有属性放入列表中?我使用sharpdeveloper 作为我的IDE。

马克·格拉维尔

这段代码看起来很奇怪——看起来你想要一些私有字段,但只是string那些:

var fields = typeof(c_invPrd).GetFields(
        BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
     .Where(f => f.FieldType == typeof(string)).ToArray();

如果你只想要名字:

var fields = typeof(c_invPrd).GetFields(
        BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
     .Where(f => f.FieldType == typeof(string)).Select(f => f.Name).ToArray();

如果你想要这些值,那么你需要一个类型的实例,然后使用FieldInfo.GetValue

c_invPrd obj = ...
var fields = typeof(c_invPrd).GetFields(
          BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
     .Where(f => f.FieldType == typeof(string))
     .Select(f => (string)f.GetValue(obj)).ToArray();

坦率地说,这段代码只是莫名其妙。这些东西应该是const(对于string)或static readonly(对于Type) - 或者它们应该是常规属性,即

public int ITEM_NO {get;set;} // I'd use ItemNumber if it was me, but...
public string PRD_CD {get;set;} // I'm going to guess... ProductCode?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C#Interop从Excel中以纯文本格式获取所有工作表名称吗?

来自分类Dev

列出C ++中WMI类的所有属性

来自分类Dev

在C#中获取所有控制器和动作名称

来自分类Dev

如何在Objective C中获取特定类的所有分配实例?

来自分类Dev

我如何从Mono中的c ++获取某个类中所有方法的列表?

来自分类Dev

C#LINQ-如何区分两个属性,但保留类中的所有属性

来自分类Dev

C ++:如何在类中获取带有动态变量的私有属性?

来自分类Dev

如何在Objective c中获取类的所有类方法?

来自分类Dev

C#中的XMLSerializer不包括类的所有属性

来自分类Dev

从C ++中的协议缓冲区获取所有字段名称?

来自分类Dev

我如何在C#类中登录属性名称

来自分类Dev

C#获取C#中某种对象类型的所有属性

来自分类Dev

C#如何从基类的派生类中获取特定类型的所有字段?

来自分类Dev

在C#中以字符串形式获取所有属性及其值

来自分类Dev

使用C#中的Selenium获取具有特定类的所有元素的属性值的列表

来自分类Dev

无论使用C#在XML文件中的级别如何,都获取具有相同标签名称的所有标签

来自分类Dev

枚举C中的所有枚举名称/值

来自分类Dev

在Objective-C中检测具有名称的属性的类

来自分类Dev

如何仅在类中获取所有属性名称

来自分类Dev

获取所有数组列表中的属性值c#

来自分类Dev

如何在C#Winforms中获取图像的所有文件属性

来自分类Dev

获取类继承并在C#中实现的所有类型和接口

来自分类Dev

获取C中的所有IP地址

来自分类Dev

C#按名称从dll获取类中的枚举

来自分类Dev

C#中的RegEx获取具有特定类名的所有SPAN标签

来自分类Dev

如何使用 OleDbDataAdapter 在 C# 中获取所有 excel 工作表名称

来自分类Dev

在 Tensorflow 中,使用 C++ 获取图中所有张量的名称

来自分类Dev

从类中获取所有静态属性

来自分类Dev

C# 从字符串中获取属性名称

Related 相关文章

  1. 1

    使用C#Interop从Excel中以纯文本格式获取所有工作表名称吗?

  2. 2

    列出C ++中WMI类的所有属性

  3. 3

    在C#中获取所有控制器和动作名称

  4. 4

    如何在Objective C中获取特定类的所有分配实例?

  5. 5

    我如何从Mono中的c ++获取某个类中所有方法的列表?

  6. 6

    C#LINQ-如何区分两个属性,但保留类中的所有属性

  7. 7

    C ++:如何在类中获取带有动态变量的私有属性?

  8. 8

    如何在Objective c中获取类的所有类方法?

  9. 9

    C#中的XMLSerializer不包括类的所有属性

  10. 10

    从C ++中的协议缓冲区获取所有字段名称?

  11. 11

    我如何在C#类中登录属性名称

  12. 12

    C#获取C#中某种对象类型的所有属性

  13. 13

    C#如何从基类的派生类中获取特定类型的所有字段?

  14. 14

    在C#中以字符串形式获取所有属性及其值

  15. 15

    使用C#中的Selenium获取具有特定类的所有元素的属性值的列表

  16. 16

    无论使用C#在XML文件中的级别如何,都获取具有相同标签名称的所有标签

  17. 17

    枚举C中的所有枚举名称/值

  18. 18

    在Objective-C中检测具有名称的属性的类

  19. 19

    如何仅在类中获取所有属性名称

  20. 20

    获取所有数组列表中的属性值c#

  21. 21

    如何在C#Winforms中获取图像的所有文件属性

  22. 22

    获取类继承并在C#中实现的所有类型和接口

  23. 23

    获取C中的所有IP地址

  24. 24

    C#按名称从dll获取类中的枚举

  25. 25

    C#中的RegEx获取具有特定类名的所有SPAN标签

  26. 26

    如何使用 OleDbDataAdapter 在 C# 中获取所有 excel 工作表名称

  27. 27

    在 Tensorflow 中,使用 C++ 获取图中所有张量的名称

  28. 28

    从类中获取所有静态属性

  29. 29

    C# 从字符串中获取属性名称

热门标签

归档