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