2014-12-19 9 views
0

개체에서 필드 목록을 가져 오려고합니다. 내가 길이가 0 인 배열을 반환하는 필드를 얻을 때typeof (T). 길이가 0 인 배열을 반환하는 .GetFields()

var account = SymitarInquiryDeserializer.Deserialize<SymitarAccount>(jString); 

나는 내가 잘못 여기서 뭐하는 거지 볼 수 없습니다 : 나는 개체가이 호출에 전달되는 것을 확인했다.

내 객체 정의 :

public static T Deserialize<T>(string str) where T : new() 
{ 
    var result = new T(); 
    .... 
    // Get fields of type T 
    var fields = typeof(T).GetFields(); //BindingFlags.Public | BindingFlags.Instance); 
    foreach (var field in fields) 
    { 
     .... 
    } 
    .... 
} 

어떤 아이디어 :

public class SymitarAccount 
{ 
    public int PositionalIndex { get; set; } 
    /// <summary>IQ: ~JID: Account/Share Id (format: 0000)</summary> 
    [SymitarInquiryDataFormat("ID")] 
    public int Id { get; set; } 
    /// <summary>IQ: ~JCLOSEDATE: Account/Share Closed Date where 00000000 is still open (format: YYYYMMDD)</summary> 
    [SymitarInquiryDataFormat("CLOSEDATE")] 
    public DateTime? CloseDate { get; set; } 
    public bool IsClosed { get; set; } 
    /// <summary>IQ: ~JDIVTYPE: Account/Share Div Type (format: 0)</summary> 
    [SymitarInquiryDataFormat("DIVTYPE")] 
    public int DivType { get; set; } 
    /// <summary>IQ: ~JBALANCE: Account/Share Balance (format: 0.00)</summary> 
    [SymitarInquiryDataFormat("BALANCE")] 
    public decimal Balance { get; set; } 
    /// <summary>IQ: ~JAVAILABLEBALANCE: Account/Share Avaialable Balance (format: 0.00)</summary> 
    [SymitarInquiryDataFormat("AVAILABLEBALANCE")] 
    public decimal AvailableBalance { get; set; } 
} 

내 방법은 필드를 얻으려면?

답변

8

이는 필드가 아니며 속성입니다. 대신 GetProperties을 사용하십시오.

var properties = typeof(T).GetProperties(); 
2

GetFields은 공용 변수를 반환합니다. 당신이 밟은 것은 전화로받을 수있는 부동산 이름입니다. GetProperties

관련 문제