为了账号安全,请及时绑定邮箱和手机立即绑定

使用C#中的反射从字符串中获取属性值

使用C#中的反射从字符串中获取属性值

慕姐4208626 2019-05-27 16:52:58
使用C#中的反射从字符串中获取属性值我正在尝试使用我的代码中的Reflection 1示例实现数据转换。该GetSourceValue函数有一个比较各种类型的开关,但我想删除这些类型和属性,并GetSourceValue只使用一个字符串作为参数获取属性的值。我想在字符串中传递一个类和属性并解析属性的值。这可能吗?1个 原始博客文章的Web Archive版本
查看完整描述

4 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

这样的事情怎么样:

public static Object GetPropValue(this Object obj, String name) {
    foreach (String part in name.Split('.')) {
        if (obj == null) { return null; }

        Type type = obj.GetType();
        PropertyInfo info = type.GetProperty(part);
        if (info == null) { return null; }

        obj = info.GetValue(obj, null);
    }
    return obj;}public static T GetPropValue<T>(this Object obj, String name) {
    Object retval = GetPropValue(obj, name);
    if (retval == null) { return default(T); }

    // throws InvalidCastException if types are incompatible
    return (T) retval;}

这将允许您使用单个字符串下降到属性,如下所示:

DateTime now = DateTime.Now;int min = GetPropValue<int>(now, "TimeOfDay.Minutes");int hrs = now.GetPropValue<int>("TimeOfDay.Hours");

您可以将这些方法用作静态方法或扩展。


查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 1617 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信