2011-02-16 3 views
2

내가 다음.NET 반사 -

var model = new MyModel("SomeValueForMyProperty") 

Type declaringType = model.MyProperty.GetType().DeclaringType 

시도

속성 인스턴스에서 클래스의 유형을 얻을 수 있나요 인스턴스 속성에서 선언 클래스의 형태를 취득하지만 결과는 항상 아닙니다 DeclaringType과 ReflectedType 모두

+1

당신은 속성이 속성의 유형에서 선언 된 유형을 의미합니까? 'public type Derp {public string Herp {get; set;}}'당신이'typeof (Derp)'를 얻길 원합니까? – Will

+0

이제 그 방법을 넣어 봤습니다. :)이 방법으로 GetType()을 사용하는 것이 실제로 이루어지는 것은 아닙니다. PropertyInfo에 도착해야한다고 생각하지만 속성 인스턴스 자체에서 가능한지 확실하지 않습니다. – ricardo

답변

1

Type에서 해당 유형의 속성을 선언하는 클래스에 대한 직접 링크가 없습니다.

당신은 사용해야 할 겁니다 PropertyInfo :

PropertyInfo propInfo = model.GetType().GetProperty("MyProperty"); 

// get the property value: 
object value = propInfo.GetValue(model, null); 
// get the property's declaring type: 
Type declaringType = propInfo.DeclaringType;