【发布时间】:2016-06-09 18:59:08
【问题描述】:
我正在尝试编写一个方法来获取 viewModel 中的所有 ObservableCollections 并将每个都转换为 ObservableCollection<object>。使用反射我已经能够将每个ObservableCollection<T> 作为一个对象,但是我很难将此对象转换为ObservableCollection<object>。到目前为止,这是我的代码:
var props = viewModel.GetType().GetProperties();
Type t = viewModel.GetType();
foreach (var prop in props)
{
if (prop.PropertyType.Name == "ObservableCollection`1")
{
Type type = prop.PropertyType;
var property = (t.GetProperty(prop.Name)).GetValue(viewModel);
// cast property as an ObservableCollection<object>
}
}
有人知道我应该怎么做吗?
【问题讨论】:
-
转换为
ObservableCollection<object>不是类型安全的。你为什么要这样做?也许还有另一种方法可以实现您的目标。 -
此线程中每个答案的主要缺点是,如果旧集合发生更改,新集合将不会更改或发送任何通知。如果不编写大量解决方法代码,就无法克服这个问题。有时这种限制或 CLR 类型系统真的很烦人。
标签: c# .net observablecollection