加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

C#、Python中分别是怎么实现通过字符串获取实体类的值以及给实体

发布时间:2020-12-15 21:26:36 所属栏目:asp.Net 来源:网络整理
导读:p class="title"一、引入 最近遇到一个项目里面的功能,在给实体类赋值的时候,由于赋值字段是动态生成的,所以如果用常用的方法(直接实体类的名称.字段名=要赋的值),将会生成很多无用的代码,所以找到了一个通过反射的赋值与取值的方法,顺便总结一下,

<p class="title">一、引入

  最近遇到一个项目里面的功能,在给实体类赋值的时候,由于赋值字段是动态生成的,所以如果用常用的方法(直接实体类的名称.字段名=要赋的值),将会生成很多无用的代码,所以找到了一个通过反射的赋值与取值的方法,顺便总结一下,以及对比一下与Python语言同样实现该功能的区别之处。

  

  

<span style="color: #0000ff">namespace<span style="color: #000000"> ConsoleApplication1
{
<span style="color: #0000ff">class
<span style="color: #000000"> Program
{
<span style="color: #0000ff">static
<span style="color: #0000ff">void
Main(<span style="color: #0000ff">string
<span style="color: #000000">[] args)
{
<span style="color: #0000ff">#region
通过字符串设置实体类的值
<span style="color: #008000">//
<span style="color: #008000">初始化一个实体类
<span style="color: #008000">//<span style="color: #008000">Student model_stu = new Student();
<span style="color: #008000">//<span style="color: #008000">string id_str = "stu_id";
<span style="color: #008000">//<span style="color: #008000">string name_str = "stu_name";
<span style="color: #008000">//<span style="color: #008000">string addr_str = "stu_address";
<span style="color: #008000">//<span style="color: #008000">Type type = model_stu.GetType();<span style="color: #008000">//<span style="color: #008000">获取类型
<span style="color: #008000">//<span style="color: #008000">PropertyInfo property_info_id = type.GetProperty(id_str);
<span style="color: #008000">//<span style="color: #008000">PropertyInfo property_info_name = type.GetProperty(name_str);
<span style="color: #008000">//<span style="color: #008000">PropertyInfo property_info_addr = type.GetProperty(addr_str);

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;property_info_id.SetValue(model_stu,5);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;property_info_name.SetValue(model_stu,"李四");
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;property_info_addr.SetValue(model_stu,"北京市");

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;Console.WriteLine(model_stu.stu_id);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;Console.WriteLine(model_stu.stu_name);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;Console.WriteLine(model_stu.stu_address);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;Console.ReadKey();</span>
        <span style="color: #0000ff"&gt;#endregion</span>

        <span style="color: #0000ff"&gt;#region</span> 通过字符串获取实体类的值
        <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;初始化一个实体类</span>
        Student model_stu = <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Student()
        {
            stu_id </span>= <span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;,stu_name </span>= <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;张三</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,stu_address </span>= <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;上海市</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;
        };
        </span><span style="color: #0000ff"&gt;string</span> id_str = <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;stu_id</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;
        </span><span style="color: #0000ff"&gt;string</span> name_str = <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;stu_name</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;
        </span><span style="color: #0000ff"&gt;string</span> addr_str = <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;stu_address</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;
        Type type </span>= model_stu.GetType();<span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;获取类型</span>
        PropertyInfo property_info_id =<span style="color: #000000"&gt; type.GetProperty(id_str);
        PropertyInfo property_info_name </span>=<span style="color: #000000"&gt; type.GetProperty(name_str);
        PropertyInfo property_info_addr </span>=<span style="color: #000000"&gt; type.GetProperty(addr_str);

        Console.WriteLine(property_info_id.GetValue(model_stu));
        Console.WriteLine(property_info_name.GetValue(model_stu));
        Console.WriteLine(property_info_addr.GetValue(model_stu));
        Console.ReadKey();
        </span><span style="color: #0000ff"&gt;#endregion</span><span style="color: #000000"&gt;

    }
}
</span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;class</span><span style="color: #000000"&gt; Student
{
    </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;int</span> stu_id { <span style="color: #0000ff"&gt;get</span>; <span style="color: #0000ff"&gt;set</span><span style="color: #000000"&gt;; }
    </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;string</span> stu_name { <span style="color: #0000ff"&gt;get</span>; <span style="color: #0000ff"&gt;set</span><span style="color: #000000"&gt;; }
    </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;string</span> stu_address { <span style="color: #0000ff"&gt;get</span>; <span style="color: #0000ff"&gt;set</span><span style="color: #000000"&gt;; }
}

}

= self.id = self.name = self.addr = stu = Student(1,, v_id = v_name = v_addr = (hasattr(stu,v_id)) (hasattr(stu,)) ( (getattr(stu,v_id,5)) (getattr(stu,v_name,)) (getattr(stu,,)) ( setattr(stu,1000) setattr(stu,) setattr(stu,v_addr,) == main()

<p class="title">四、总结

  个人更喜欢Python的处理方式,非常灵活,大爱Python。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读