zoukankan      html  css  js  c++  java
  • 对象转换对同属性进行赋值

    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;

    一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。
  • 相关阅读:
    记周日一次故障意外
    每周一坑-【3月第1周】
    关于计划任务的一个小需求-优化篇
    400篇博客的一个里程碑
    关于计划任务的一个小需求-实现篇
    关于计划任务的一个小需求
    微服务优雅停机研究
    NSUInteger设为负数
    Mac上运行第一个Flutter项目
    Vue filtersfilter、computed、methods、watch对比
  • 原文地址:https://www.cnblogs.com/rhythmK/p/2084783.html
Copyright © 2011-2022 走看看