2010-07-15 3 views
0

C#에서 키, 값 쌍의 컬렉션을 만들고 싶습니다. 여기서 키는 ASP.net 컨트롤 (예 : ID)의 속성이고 값은 해당 속성의 값입니다. 나중에 컬렉션을 반복하고 주어진 컨트롤에 내 컬렉션의 속성이 있고 컨트롤의 속성 값이 컬렉션에 정의 된 값과 일치하는지 확인할 수 있도록이 작업을 수행하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 어떤 도움을 주셔서 감사합니다.속성 모음 => 값?

의사 코드 예제 :

Properties[] = new Properties[] {new Property(){name="ID",value="TestControl1"}, new Property(){name = "Text",value="Type text here"}} 

private bool controlContainsProperties(Control control){ 
    foreach(Property Property in Properties[]) 
    { 
     if((control does not contain property) || (control property value != Property.Value)) 
     return false; 
    } 
return true; 
} 

답변

0

이 테스트를하지만, 여기 내 이동의하지 않았다 :

public bool HasProperty(object target, IDictionary<string, object> values) 
    { 
     var targetType = target.GetType(); 
     return values.All(kvp => 
      { 
       var property = targetType.GetProperty(kvp.Key); 
       if (property != null) 
       { 
        var value = property.GetValue(target, null); 
        if (value != null) 
         return value.Equals(kvp.Value); 
       } 
       return false; 
      }); 
    } 
0

내 첫번째 생각은 '태그'속성을 사용하여,하지만 그때 APS.NET 컨트롤에는 태그가 없음을 깨달았다. 그러나 태그에 대한 답변은 question입니다.

'속성'속성 맵이있는 솔루션이 있습니다. 유망 해 보입니다.