.net解决, A对象赋值给B对象,修改B对象,A对象也变化了

news/2024/10/11 17:26:40/

你可以使用C#编程语言来编写一个通用的扩展方法,用于将一个对象的值复制到另一个对象,并且修改目标对象的属性时原始对象不受影响。

以下是一个示例代码:

using System;
using System.Reflection;public static class ObjectExtensions
{public static void CopyPropertiesTo<T>(this object source, T destination){if (source == null)throw new ArgumentNullException(nameof(source));if (destination == null)throw new ArgumentNullException(nameof(destination));Type sourceType = source.GetType();Type destinationType = typeof(T);PropertyInfo[] sourceProperties = sourceType.GetProperties();PropertyInfo[] destinationProperties = destinationType.GetProperties();foreach (var sourceProperty in sourceProperties){foreach (var destinationProperty in destinationProperties){if (sourceProperty.Name == destinationProperty.Name && sourceProperty.PropertyType == destinationProperty.PropertyType &&destinationProperty.CanWrite){object value = sourceProperty.GetValue(source);destinationProperty.SetValue(destination, value);break;}}}}
}

可以按照以下方式使用该扩展方法:

public class A
{public int Foo { get; set; }public string Bar { get; set; }
}public class B
{public int Foo { get; set; }public string Bar { get; set; }
}public class Program
{static void Main(){A a = new A { Foo = 42, Bar = "Hello" };B b = new B();a.CopyPropertiesTo(b);Console.WriteLine($"a: Foo = {a.Foo}, Bar = {a.Bar}");Console.WriteLine($"b: Foo = {b.Foo}, Bar = {b.Bar}");b.Foo = 100; // 修改b对象的属性值Console.WriteLine($"a: Foo = {a.Foo}, Bar = {a.Bar}");Console.WriteLine($"b: Foo = {b.Foo}, Bar = {b.Bar}");}
}


http://www.ppmy.cn/news/937911.html

相关文章

云计算运维和传统运维工程师有何区别

目录 第一、工作场景不同 第二、工作内容不同 第三、工作方法不同 第四&#xff0c;云计算运维工程师需要考虑两个问题&#xff1a; 学习云计算就业方向多&#xff0c;运维是其中比较重要地岗位之一。有人好奇云计算运维工程师和传统运维有什么区别&#xff1f;接下来就给大…

C语言计算今天是一年的第几周

/*!brief 计算今天是一年的第几周param [in] nYear 年param [in] nMonth 月param [in] nDate 日param [in] nWeek 星期几return uint16_t*/ uint16_t Cal_YearWeek(int nYear, int nMonth, int nDate, int nWeek) {uint16_t uYearWeek;int nWeekCnt 0;int nWeekRemain 0;i…

获取当前第几周

getMonthWeek(date) { //获取当前时间转字符串并用字符串方法split转数组&#xff0c;获取当前时间年、月、日 let currentTimeArr this.$moment(date) .month("YYYY-MM-DD") .format("YYYY-MM-DD") .split("-"); //当前日期年 let year …

怎样查询今天是属于一年中的第几周?ww和iw 的周别问题。

select to_char(sysdate,ww) ,to_char(sysdate,iw) from dual; select to_char(sysdate,ddd) from dual; select TRUNC(SYSDATE,MM) from dual; 1&#xff09;ww的算法为每年1月1日为第一周开始&#xff0c;date6为每一周结尾 例如20050101为第一周的第一天&#xff0c;而第一…

获取今天是第几周

getWeekYear() {var d1 new Date();var d2 new Date();//下面是获取今年1月号是第几周var Y d1.getFullYear();var resDate Y "-" "01" "-" "01";var W new Date(Date.parse(resDate)).getDay(); //今年的1月1号周几//下面是…

代码随想录第十六天

代码随想录第十六天 Leetcode 104. 二叉树的最大深度Leetcode 559. N 叉树的最大深度Leetcode 111. 二叉树的最小深度Leetcode 222. 完全二叉树的节点个数 Leetcode 104. 二叉树的最大深度 题目链接: 二叉树的最大深度 自己的思路:后序遍历&#xff0c;左右中遍历&#xff0c;…

JS计算今天在本月第几周

计算某月某日是在某月的第几周&#xff1b; a d 当前日期b 6 - w 当前周的还有几天过完(不算今天)a b 的和在除以7 就是当天是当前月份的第几周*/ date是需要计算的日期。 通过new Date() 方法获取时间戳 var date new Date(date), 通过getDay()方法获取到date是星期几…

获取自然周;一年中总的周数,以及当前日期处于第几周

https://dayjs.fenxianglu.cn/ 插件 主要代码&#xff1a; let year dayjs().year() // 默认今年 let date dayjs().format(‘YYYY-MM-DD’) // 默认今天 let week dayjs(date).week() -1 // 26 // 获取当前日期所处自然周 let weekCount dayjs(year).isoWeeksInYear() -1 …