2012-06-26 2 views
1

저는 Type.GetProperties()를 사용하여 객체의 public 속성을 반복하는 모듈을 가지고 있으며 이러한 속성에 대한 다양한 연산을 수행합니다. 그러나 때로는 일부 속성을 다르게 처리해야합니다 (예 : 무시). 내 모듈 타입의 TestClass의 객체를 얻을 때마다, 재산 Prop2 무시하도록 지정할 수 있도록하고 싶습니다 지금클래스 (객체가 아닌)의 속성을 참조하는 방법은 무엇입니까?

class TestClass 
{ 
    public int Prop1 { get; set; } 
    public int Prop2 { get; set; } 
} 

예를 들어, 나는 다음과 같은 클래스가 있다고 가정합니다. 이상적으로 나는 다음과 같이 말할 수 있기를 바란다 :

ReflectionIterator.AddToIgnoreList(TestClass::Prop2); 

그러나 이것은 분명히 작동하지 않는다. 클래스의 인스턴스를 처음 만들면 PropertyInfo 객체를 얻을 수 있지만,이를 수행하기 위해 인위적인 인스턴스를 만들지는 않습니다. TestClass :: Prop2에 대한 PropertyInfo-object를 얻을 수있는 다른 방법이 있습니까? 속성을 반복 할 때 다음

ReflectionIterator.AddToIgnoreList("NamespaceName.TestClass.Prop2"); 

과 :

은 (공식적으로, 내 현재 솔루션은 다음과 같이 다음을 통해 반복 각 속성 비교 문자열 리터럴을 사용

foreach (var propinfo in obj.GetProperties()) 
{ 
    if (ignoredProperties.Contains(obj.GetType().FullName + "." + propinfo.Name)) 
    // Ignore 
    // ... 
} 

하지만이 솔루션은

답변

4
List<PropertyInfo> ignoredList = ... 

ignoredList.Add(typeof(TestClass).GetProperty("Prop2")); 

) ... 조금 혼란과 오류가 발생하기 쉬운 것 그 일을해야만합니다 ... 그냥 여부를 확인하십시오 ignoredList.Contains(propinfo)

+0

와우, 정말 고마워! –

+0

꼬마 요정, 어떤 식 으로든 그 문자열을 피할 수 있을까요? 그래서 코 일러와 인텔리 센스가 나를 도울 수 있을까요? –

+0

http://stackoverflow.com/a/388841/781792 답변. –

0

속성을 속성에 추가하여 사용 방법을 정의 할 수 있습니까? 예 :

class TestClass 
{ 
    public int Prop1 { get; set; } 

    [Ignore] 
    public int Prop2 { get; set; } 
} 
+0

좋은 제안, 나는이 방향으로 갈 것 같아. 그러나 잠시 동안 내가 얻을 수있는 모든 객체를 제어 할 수 있을지 확신하지 못하기 때문에 속성을 추가 할 수 없을 수도 있습니다. –

관련 문제