假设我有课,
class A
{
B PropA{get; set;}
}
class B
{
string PropB{get; set;}
C PropC{get; set;}
}
class C
{
string PropD{get; set;}
}
现在我想获取“ PropA.PropB”吗?同样,我想获取“ PropA.PropC.PropD”,依此类推吗?我需要创建一个将“ PropA.PropB”作为参数并返回PropetyInfo的方法。
static class Program
{
static readonly BindingFlags flags = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
static void Main() {
var a = new A { PropA = new B() { PropB = "Value" } };
var prop = GetPropertyRecursive("PropA.PropB", a);
}
static object GetPropertyRecursive(string property, object obj) {
var splitted = property.Split('.');
var value = obj.GetType().GetProperty(splitted[0], flags).GetValue(obj);
if (value == null) {
return null;
}
if (splitted.Length == 1) {
return value;
}
return GetPropertyRecursive(string.Join(".", splitted.Skip(1)), value);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句