2012-04-04 70 views
0

嗯,我打算从动态铸造类获取类成员的值,但我无法找到它的子类成员值。
现在我得到了TotalWeight成员属性,但我也想获得AnotherClass的子成员属性,如AnotherClass.child。我如何获得这些成员?如何从动态流转类获取子成员的值?

string ClassName="something"; 
Type types = Type.GetType(ClassName, false); 
var d = from source in types.GetMembers().ToList() 
     where source.MemberType == MemberTypes.Property 
     select source; 

List<MemberInfo> members = d.Where(memberInfo => 
            d.Select(c => c.Name) 
            .ToList() 
            .Contains(memberInfo.Name)) 
          .ToList(); 

PropertyInfo propertyInfo; 
object value; 
foreach (var memberInfo in members) 
{ 
    propertyInfo = typeof(T).GetProperty(memberInfo.Name); 
    if (myobj.GetType().GetProperty(memberInfo.Name) != null) 
    { 
    value = myobj.GetType() 
       .GetProperty(memberInfo.Name) 
       .GetValue(myobj, null); 
    //how to get child members value here? 


    } 
} 

//Where class something has member 

public class something 
{ 
    private decimal _totalWeight;  
    private Anotherclass _another; 
    public decimal TotalWeight 
    { 
    get 
    { 
     return this._totalWeight; 
    } 
    set 
    { 
     this._totalWeight = value; 
    } 
    } 

    public Anotherclass Another 
    { 
    get 
    { 
     return this._another; 
    } 
    set 
    { 
     this._another= value; 
    } 
    }  
} 

回答

0

你可以得到你的属性的类型,然后在你的代码开始时使用这种类型。

foreach(var memberInfo in members) 
{ 
    propertyInfo = types.GetProperty(memberInfo.Name); 
    if(propertyInfo != null) 
    { 
    Console.WriteLine(propertyInfo.PropertyType); 
    // type of every property 
    } 
} 
+0

我不能达到属性类型我想要获得子类的值 – 2012-04-05 05:47:52