typeof (). GetFields не показывает List <T> - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь пройти мой класс, но я не могу перечислить все.

У меня есть класс:

public class Order
{
    public string PO_NO { get; set; }
    public string APPROVED_DATE { get; set; }
    public string SPPLR_CONTACT { get; set; } //SPPLR_Mailbox
    public string PO_REMARKS { get; set; }
    public string PO_CREATION_DATE { get; set; }
    public string SPPLR_CD { get; set; }
    public string OWN_CD { get; set; }
    public string LOCATION_CODE { get; set; }
    public string LOCATION_ID { get; set; }
    public string SHIPPING_TYPE { get; set; }
    public string FREIGHT_TERMS { get; set; }
    public string PO_STATUS { get; set; }
    public string CONTACT_PERSON { get; set; }
    public string CONTACT_PERSON_MAIL { get; set; }
    public string CONTACT_PERSON_PHONE { get; set; }

    public string ATTRIBUTE01 { get; set; }
    public string ATTRIBUTE02 { get; set; }
    public string ATTRIBUTE03 { get; set; }
    public string ATTRIBUTE04 { get; set; }
    public string ATTRIBUTE05 { get; set; }
    public List<OrderDetails> OrderDetails = new List<OrderDetails>();
}

И я пытаюсь "перечислить" это так

FieldInfo[] fields = typeof(Order).GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var field in fields)
{
    Debug.WriteLine(field.Name + "---" + field.FieldType);
}

Получение этого вывода:

<PO_NO>k__BackingField---System.String
<APPROVED_DATE>k__BackingField---System.String
<SPPLR_CONTACT>k__BackingField---System.String
<PO_REMARKS>k__BackingField---System.String
<PO_CREATION_DATE>k__BackingField---System.String
<SPPLR_CD>k__BackingField---System.String
<OWN_CD>k__BackingField---System.String
<LOCATION_CODE>k__BackingField---System.String
<LOCATION_ID>k__BackingField---System.String
<SHIPPING_TYPE>k__BackingField---System.String
<FREIGHT_TERMS>k__BackingField---System.String
<PO_STATUS>k__BackingField---System.String
<CONTACT_PERSON>k__BackingField---System.String
<CONTACT_PERSON_MAIL>k__BackingField---System.String
<CONTACT_PERSON_PHONE>k__BackingField---System.String
<ATTRIBUTE01>k__BackingField---System.String
<ATTRIBUTE02>k__BackingField---System.String
<ATTRIBUTE03>k__BackingField---System.String
<ATTRIBUTE04>k__BackingField---System.String
<ATTRIBUTE05>k__BackingField---System.String

Список отсутствует, что не так или что я могу сделать, чтобы получить его в списке?

Iя пытаюсь создать библиотеку для myslef, к которой я мог бы просто повесить класс и сгенерировать весь xml, но я не смогу создать структуру динамически, так как я не получаю этот List (дочерний узел)

1 Ответ

0 голосов
/ 10 октября 2018

Как сказал @thehenny, BindingFlags не правы.Я просто добавил BindingFlags.Public

, поэтому код изменился с:

FieldInfo[] fields = typeof(Order).GetFields(BindingFlags.NonPublic | BindingFlags.Instance );
       foreach (var field in fields)
            {
                Debug.WriteLine(field.Name + "---" + field.FieldType);
            }

На:

FieldInfo[] fields = typeof(Order).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
            foreach (var field in fields)
            {
                Debug.WriteLine(field.Name + "---" + field.FieldType);
            }
...