-4
我有兩個類如果屬性類C#使用反射,如何獲取屬性值?
public class A
{
public string Name {get; set;}
}
和
public class B
{
public A A {get; set;}
}
我怎樣才能從A的對象B屬性名稱的價值?
現在我用
string fromName = GetPropertyName(from);
string toName = GetPropertyName(to);
PropertyInfo oldProperty = typeof(T).GetProperty(toName);
PropertyInfo newProperty = typeof(T).GetProperty(fromName);
var oldValue = newProperty.GetValue(item);
if (cryptVal != null && !string.IsNullOrWhiteSpace(oldValue.ToString()))
{
string newVal = provider.get(oldValue.ToString());
property.SetValue(item, newVal, null);
}
private static string GetPropertyName<T>(Expression<Func<T,object>> property)
{
var memberNames = new List<string>();
var memberExpression = property.Body as MemberExpression;
while (null != memberExpression)
{
memberNames.Add(memberExpression.Member.Name);
memberExpression = memberExpression.Expression as MemberExpression;
}
memberNames.Reverse();
return string.Join(".", memberNames.ToArray());
}
,但得到的名字Device.Name不可能:)值。在這裏我認爲需要檢查屬性名是否有點,需要使用Split並獲取value對象類,然後獲取屬性。但也許還有其他變種?
爲什麼你需要使用反射而不僅僅是'bInsatnce.A.Name'? – juharr
@Derek的答案回答了目前制定的問題,但Selman22指出你用「反思」標記了這個問題。你需要反思什麼?你真的不知道所有類和屬性的名稱嗎?如果是這樣,請編輯您的問題以反映您*不知道的內容。 – adv12