将反映的属性强制转换为ObservableCollection

时间:2018-10-31 14:18:16

标签: c# generics reflection observablecollection

我有一个C#程序,其中我通过反射获取类中属性的值。其中一些属性是ObservableCollections。我之所以专门使用它们,是因为我想访问CollectionChanged事件。

这是我获取财产的方式:

var o = propertyInfo.GetValue(this, null);

现在(从代码中的其他条件来看)我知道这是一个ObservableCollection。但是我不能只使用'o.CollectionChanged',因为编译器不会那样看。

我认为我应该做的是将'o'强制转换为ObservableCollection。也许是这样的:

(o as ObservableCollection<>).CollectionChanged...

但不幸的是,这行不通。我在尖括号之间发现一个错误,提示“预期类型”。

我可以在o内获取类型吗?当然,我可以使用GetGenericArguments,它返回ObservableCollection中项目的类型。但是问题是,在投射时我不能在尖括号之间插入该类型-它只是不允许使用。

我该怎么做?

我知道还有另一个与此类似的问题,但是据我所知,它没有解决我的问题,解决方案也无法回答我的问题。我也认为,由于这个问题已有五年多的历史了,因此很难再提出更多要求。此外,这个人希望基于他拥有的对象来获得一个收藏,而解决方案可以反映这一点。问题底部的“工作解决方案”对他有效,根本无法解决我的问题。如果您不仔细阅读,您可能会认为它们是相似的,但事实并非如此。

0 个答案:

没有答案