이전에는 내부에 System.Collections.Generic.List<Item>
(Item은 내가 만든 클래스 임)을 래핑 한 클래스가있었습니다. 래퍼 클래스는 목록의 항목에 대한 합계, 평균 및 기타 계산을 제공하는 여러 가지 컬렉션 수준 속성을 제공했습니다. 나는이 주위에 BindingSource
을 작성했으며 List<>
과 다른 클래스는 BindingSource
이며, 래핑 된 목록의 항목은 첫 번째 BindingSource
을 통해 얻을 수 있었고 두 번째 래퍼 클래스의 컬렉션 수준 속성도 얻을 수있었습니다. 이렇게 만든 결합 소스와Derived List 클래스의 목록 항목과 연결되지 않은 속성에 데이터 바인딩하는 방법 List <T>
public class OldClass()
{
private List<Item> _Items;
public OldClass()
{
_Items = new List<Item>();
}
public List<Item> Items { get { return _Items; } }
// collection-level properties
public float AverageValue { get { return Average() } }
public float TotalValue { get { return Total() } }
// ... other properties like this
}
: 최근
_itemsBindingSource = new BindingSource(oldClass.Items);
_summaryBindingSource = new BindingSource(oldClass);
, I는이 클래스를 변화 시키려고 유지 대신 System.Collections.Generic.List<Item>
로부터 유도 될
단순화 된 예처럼 보이는 싸서 List<>
회원. 내 희망은 여분의 래퍼 레이어를 없애고 두 개 대신 BindingSource
하나만 사용하는 것이 었습니다. 그러나 이제 데이터 바인딩을 수행 할 때 목록의 모든 항목에 적용되는 속성 (예 : AverageValue
)을 얻을 수 없다는 것을 알게되었습니다. 목록 항목의 속성 만 사용할 수 있습니다.
List<>
을 Item
s로 감싸는 것을 사용하도록 강요 당했습니까? 아니면 컬렉션 자체에 적용되는 속성뿐만 아니라 Item
의 두 속성 모두에서 새 클래스를 저장할 수있는 방법이 있습니까?