0
제네릭 형식의 컬렉션에서 요소를 계산하기 위해 형식에 독립적 인 변환기를 만들고 싶습니다.IValueConverter - 일반 컬렉션 캐스팅
public class CollectionCountConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((SomeCastingType)value).Count;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException(); // not used for oneway binding
}
}
이 값은 모든 유형의 컬렉션입니다. 문제는 올바른 형 변환 유형을 찾고 객체를 형 변환하는 것입니다. 내가 갖고 싶은 것은
Type t = value.GetType();
ICollection<t> c = (ICollection<t>) value;
int count = c.Count();
과 비슷하지만 작동하지 않습니다. Object도 제네릭 형식으로 사용하려고했지만 InvalidCastException이 발생합니다. 그것을 할 우아한 방법이 있습니까?
여기에 관련된 실제 유형은 무엇입니까? 대부분의 콜렉션은 비 전통적 인'ICollection' 인터페이스도 구현합니다. 이것은 물건을 더 단순하게 만듭니다 ... 대신 사용할 수 있습니까? –
'IEnumerable
실제 목록 유형은 ** List **이며 ICollection 인터페이스 캐스팅과 함께 작동합니다! 죄송합니다, C#에 익숙하지 않습니다 ... –
user2476294