2012-07-24 1 views

답변

11

예, 할 수 있습니다 BigYellowCactus 표시된 것처럼 반사를 사용 가능

class MyClass 
{ 
    public string A { get; set; } 
    public string B { get; set; } 
    public string C { get; set; } 

    public MyClass() 
    { 
     int count = this.GetType().GetProperties().Count(); 
     // or 
     count = typeof(MyClass).GetProperties().Count(); 
    } 
} 
+0

아 얼마나 쉽게 이잖아 그것은. Sry, 나는 그것의 훨씬 더 열심히 생각했다 - 나가 목표를 창조 한 후에 재산의 총계를 읽는 것은 쉬운 생각했다 그러나 나가 더 단단한 생각한 목표가없는 전에. Thx – miri

+0

유형은 인스턴스가없는 경우에도 런타임에 알려져 있습니다. – sloth

3
public MyClass() 
{ 
    int count = GetType().GetProperties().Count(); 
} 
+0

: (어리석은 capcha 입력 –

5

. 그러나 프로퍼티의 수가 변경되지 않을 때마다 생성자에서이 작업을 수행 할 필요가 없습니다.

내가 (유일한 유형에 한 번이라고 함) 정적 생성자에서 그 일을 제안 :

class MyClass 
{ 
    public string A{ get; set; } 
    public string B{ get; set; } 
    public string C{ get; set; } 

    private static readonly int _propertyCount; 

    static MyClass() 
    { 
     _propertyCount = typeof(MyClass).GetProperties().Count(); 
    } 
} 
0

사용이 속성의 어떤을 계산하기위한 클래스가 포함

Type type = typeof(YourClassName); 
int NumberOfRecords = type.GetProperties().Length; 
관련 문제