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

我有一个名为c_invPrd的类,其代码如下。从C#中的类中获取所有属性名称

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#把所有喜欢ITEM_NO,PRD_INDEX,PRD_CD,PRD_DESC,PRINCIPAL_IND属性等进入名单由以下访问c_invPrd类?我正在使用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?

以上是 从C#中的类中获取所有属性名称 的全部内容, 来源链接: utcz.com/qa/262325.html

回到顶部