我有一个可观察的几个已知类型的对象集合,但是当迭代它们时我不知道当前对象的类型。
如何获取当前对象的类型?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用GetType方法。 像这样:
ObservableCollection<object> coll = new ObservableCollection<object>();
var a = this.coll[0].GetType();
var b = this.coll[1].GetType();
答案 2 :(得分:0)
如果您有一个具有泛型类型的ObservableCollection,您可以编写类似这样的内容来了解其中的内容:
// Assume this is your observable collection
var observableCollection = new ObservableCollection<string>();
Type type = observableCollection.GetType().GetGenericArguments()[0];
答案 3 :(得分:0)
如果只有几种不同类型,并且您根据类型采取不同的操作,则可以使用is
检查每种类型:
foreach(var thing in collection){
if(thing is TypeA){
doTypeA();
}else if(thing is TypeB){
doTypeB();
}
另一个可能的选项,如果它具有设计意义并且对象在您的控制之下,那么它们是否都要实现一个接口,其中包含一个获取Enum描述类型的方法?然后你可以打开它。
答案 4 :(得分:0)