发布日期:2018-03-26
C#中使用反射来根据字符串获取属性值+ 查看更多
C#中使用反射来根据字符串获取属性值
+ 查看更多
发布日期:2018-03-07 14:07
分类:C#
浏览次数:125
我正在尝试使用反射来进行数据转换的示例 (C# Reflection Tips: Data transformation using Reflection, [[http://geekswithblogs.net/shahed/archive/2008/07/24/123998.aspx]] )。
该示例中,GetSourceValue 函数有一个比较各种类型的switch语句,
private object GetSourceValue(string propertyName) { if (SourceObject == null) { SourceDataProvider provider = new SourceDataProvider(); this.SourceObject = provider.GetSource(); } switch (propertyName) { case "FirstName": return SourceObject.FirstName; case "LastName": return SourceObject.LastName; case "ContactAddress": return this.SourceObject.ContactAddress; case "ContactPhone": return this.SourceObject.ContactPhone; case "ContactMobile": return this.SourceObject.ContactMobile; case "ShippingAddress": return this.SourceObject.ShippingAddress; case "ShippingPhone": return this.SourceObject.ShippingPhone; case "ShippingMobile": return this.SourceObject.ShippingMobile; default: return string.Empty; } }
我想删除这些类型和属性,并且 GetSourceValue 函数只使用一个字符串作为参数来获取该属性的值。我想以字符串的形式传递一个类和属性,并获得该类对象的属性值。
这有可能吗?
回答
public static object GetPropValue(object src, string propName) { return src.GetType().GetProperty(propName).GetValue(src, null); }当然,你会想添加验证这没什么,但这是它的要点。