我遇到了麻烦。
我想收到ObservableCollection的任何集合,并使用它。
例如,有一个类如下
public class Car{
int num;
string str;
}
和ObservableCollection
ObservableCollection<Car> carOC = new ObservableCollection<Car>();
真正重要的一点是,实际上我不知道它的存在。我不知道ObservableCollection<T>
的类型T是什么。
我想要的是一种显示收到的ObservableCollection<T>
属性列表的方法,如下面的
void showingProperties(ObservableCollection<T> coll)
{
foreach (T item in coll){
// showing item's property list
}
}
如果我将此方法用于carOC
showingProperties(carOC);
输出
carOC has properties
num type int32
str type string
我真的不知道接收ObservableCollection<T>
并使用它......
感谢您阅读。
答案 0 :(得分:2)
事实上,您的问题并没有对ObservableCollection<T>
做任何事情。你可以对任何通用集合做同样的事情。只是为了澄清,ObservableCollection<T>
会观察您的列表和项目,以便它为您提供有关列表中的变化的信息。它不会观察你的班级结构。在List上执行此操作没有多大意义,因为您的T将在列表中存在多次,但每个对象的信息都相同。所以我建议一个方法,为您提供类型的信息。看它基于类型而不是基于对象。
public string ShowProperties<T>() : where T : class
{
var props = typeof (T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
string typeInfo = typeof (T).FullName + Environment.NewLine;
foreach (var prop in props)
{
typeInfo += prop.Name + " " + prop.PropertyType.FullName + Environment.NewLine;
}
return typeInfo;
}
如果列表中有不同的项目,由于继承在foreach循环中调用了这几次。但是如果你在循环中使用它,请小心反思。考虑一下缓存。