• 对象转换对同属性进行赋值


    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Reflection;

    namespace WebLinq
    {
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    User u
    = new User();
    u.Age
    = 18;
    u.Name
    = "rhythmk";
    Man man
    = new Man();
    SetValue(u, man);
    if (man != null)
    {
    Response.Write(man.Name);

    }
    else {

    Response.Write(
    "NULL");
    }
    }

    public static void SetValue(object oldObj, object newObj)
    {
    Type oldType
    = oldObj.GetType();
    Type newType
    = newObj.GetType();

    PropertyInfo[] oldObjPropertyInfos
    = oldType.GetProperties();
    for (int i = 0; i < oldObjPropertyInfos.Length; i++)
    {
    if (oldObjPropertyInfos[i].CanRead)
    {
    string strPropertyName = oldObjPropertyInfos[i].Name;
    object newValue = GetPropertyValue(oldObj, strPropertyName);


    if (newValue != null)
    SetPropertyValue(newObj, strPropertyName, newValue);
    }
    }
    }

    private static void SetPropertyValue(object obj, string strPropertyName, object val)
    {
    Type t
    = obj.GetType();
    PropertyInfo[] propertyInfos
    = t.GetProperties();
    foreach (PropertyInfo pi in propertyInfos)
    {
    if (pi.Name == strPropertyName)
    {
    if (pi.CanWrite)
    pi.SetValue(obj, val,
    null);
    }
    }
    }

    private static object GetPropertyValue(object obj, string strPropertyName)
    {
    Type t
    = obj.GetType();
    PropertyInfo[] propertyInfos
    = t.GetProperties();
    foreach (PropertyInfo pi in propertyInfos)
    {
    if (pi.Name == strPropertyName)
    {
    if (pi.CanRead)
    return pi.GetValue(obj, null);
    }
    }
    return null;
    }
    }
    }

    主要是 避免在项目开发中 比如 Linq to sql  生成的数据类  跟实际的类 之间 进行赋值

    而无需去进行

    a.property1=b.property1;

    a.property2=b.property2;

    a.property3=b.property3;

    一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。
  • 相关阅读:
    Codeforces Round #336 (Div. 2) A. Saitama Destroys Hotel 模拟
    UVA 10341 二分搜索
    cscope 的使用
    2018年各大互联网前端面试题三(阿里)
    【前端统计图】hcharts实现堆叠柱形图(与后台数据交互)
    【前端统计图】echarts实现单条折线图
    【前端统计图】echarts实现简单柱状图
    css实现悬浮效果的阴影
    通过select下拉框里的value控制div显示与隐藏
    2018年各大互联网前端面试题四(美团)
  • 原文地址:https://www.cnblogs.com/rhythmK/p/2084783.html
Copyright © 2020-2023  润新知