【发布时间】:2016-12-17 09:57:47
【问题描述】:
在我的 C# WPF 应用程序中,我的 MainViewModel 具有此属性:
public object CurrentViewModel
{
get { return m_currentViewModel; }
set
{
m_currentViewModel = value;
OnPropertyChanged("CurrentViewModel");
}
}
假设 CurrentViewModel 在运行时返回一个实例类 VMParent。
我的 VMParent 看起来像这样:
public class VMParent
{
public object BaseViewModel
{
get { return m_baseViewModel; }
set
{
m_baseViewModel = value;
}
}
}
BaseViewModel 属性在运行时返回一个 VMBase 类的实例,该实例具有一定数量的属性。
现在,单击 MainViewModel.xaml 中的按钮,使用反射,我需要读取 CurrentViewModel 和 BaseViewModel 的所有属性的值。 我可以为 CurrentViewModel 这样做,但不能为 BaseViewModel 这样做。
请指点一下? 谢谢。
Type sourceType = CurrentViewModel.GetType();
PropertyInfo[] sourcePI= sourceType.GetProperties();
【问题讨论】:
-
为什么要通过反射?你有什么具体问题?为什么你不能为
BaseViewModel做呢?为什么BaseViewModel不只是一个标准的基类,而不是被CurrentViewModel包含?这个问题充其量是太宽泛了,实际上根本就不清楚。请提供一个很好的 minimal reproducible example 来展示您迄今为止所做的尝试,并准确解释该代码的作用以及您希望它做什么。
标签: c# wpf mvvm reflection