我正在尝试为我的派生类型编写一个通用转换器。
值正在返回我的派生类型,即List<DerivedType>
。
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string text = string.Empty;
if (value is List<BaseType>)
{
var v = value as List<BaseType>;
var x = v.Select(c => c.Name);
text = string.Join(", ", x);
}
return text;
}
DerivedType, BaseType are placeholders for classes
value = List<DerivedType>
targetType = string
parameter = null
答案 0 :(得分:2)
你去吧
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string text = string.Empty;
IEnumerable source = value as IEnumerable;
if (source != null)
{
var v = source.OfType<BaseType>();
var x = v.Select(c => c.Name);
text = string.Join(", ", x);
}
return text;
}
使用这种方法,我们只需验证该值是否为集合IEnumerable
,然后将尝试检索BaseType
的所有对象,其余部分保持不变。
另一个更简单的方法,感谢Sergey Brunov
IEnumerable<BaseType> source = value as IEnumerable<BaseType>;
if (source != null)
{
var x = source.Select(c => c.Name);
text = string.Join(", ", x);
}
其他方法可能包括验证通用类型以验证相同。