鉴于以下课程:
public class SampleViewModel
{
public TheModel Model { get; set; }
public SampleViewModel()
{
this.Model = new TheModel();
}
public class TheModel
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthdate { get; set; }
}
}
将其实例化为:
var svm = new SampleViewModel();
如何使用反射列出svm.Model中的属性?
注意:如果我在svm.Model上使用普通的GetProperties方法,我会得到14个属性,弹出各种属性信息字段,而不是TheModel类的所有属性。
注2:好的,试过这样的外部代码:
var svm = new SampleViewModel();
var props = typeof(SampleViewModel).GetProperties();
var innerprops = svm.Model.GetType().GetProperties();
这似乎有效,现在我需要弄清楚为什么当我在我的框架内使用Activator.CreateInstance创建的实例时这样做不起作用。 :)
谢谢,pom
答案 0 :(得分:1)
在SampleViewModel中获取属性Model的属性,需要调用:
typeof(SampleViewModel.TheModel).GetProperties();
或
svm.Model.GetType().GetProperties();
答案 1 :(得分:1)
PropertyInfo[] properties = svm.Model.GetType().GetProperties();
foreach (PropertyInfo p in properties)
Console.WriteLine(p.Name);
输出
Name
Age
Birthdate
GetProperties()也适用于您看到的模型