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

news/2024/2/28 5:25:43

你可以使用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 …

JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天、某周的区间范围

本文原创&#xff0c;转载请注明出处&#xff0c;如果发现写的有问题欢迎指正 **目录 ** 文章目录 JS源码获取某年某月的有多少周获取今天是今年的第几周获取今天是今年的第几天获取今天是本月第几周获取周的区间 方法说明及调用示例String.prototype.dateIndexInYearString.pr…

得出今天是一年中的第几天,第几周

<script lanuage"javascript"> var d1 new Date(); var d2 new Date(); d2.setMonth(0); d2.setDate(1); var rq d1 - d2; var s1 Math.ceil(rq/(24*60*60*1000)); var s2 Math.ceil(s1/7); alert("今天是今年中第" s1 "天,第" s2 &q…

java 根据某个日期查询出是某年的第几周

文章目录 前言一、java根据某个日期查询出是某年的第几周 前言 做记录用&#xff1a; 一、java根据某个日期查询出是某年的第几周 public class WeekByDate {public static void main(String[] args) throws ParseException {SimpleDateFormat simpleDateFormat new SimpleD…

EXCEL获取今天是今年的第几周

1&#xff0c;打开EXCEL表格。 2&#xff0c;在要显示第几周的位置&#xff08;B2&#xff09;处插入函数WEEKNUM。 3&#xff0c;Serial_number选定输入当前日期的位置&#xff08;A2&#xff09;。 4&#xff0c;Return_type输入2&#xff0c;确定。 5&#xff0c;输入要查询…

ETHERNET/IP转TCP/IP网关tcp/ip协议包含哪几层

大家好&#xff0c;今天我们将带大家了解一款自主研发的通讯网关&#xff0c;远创智控YC-EIP-TCP/IP。这是一个强大的工具&#xff0c;能帮助我们将ETHERNET/IP网络和TCP/IP网络连接在一起&#xff0c;让我们更好地管理和监控网络。 1, 首先&#xff0c;让我们来看看这款网关…

实例018 类似windows xp的程序界面

实例说明 在Windows XP环境下打开控制面板&#xff0c;会发现左侧的导航界面很实用。双击展开按钮&#xff0c;导航栏功能显示出来&#xff0c;双击收缩按钮&#xff0c;导航按钮收缩。下面通过实例介绍此种主窗体的设计方法。运行本例&#xff0c;效果如图1.18所示。 ​编辑…

敞篷超跑造型,还支持4KHz回报,雷柏VT960 Pro游戏鼠标体验

想要在游戏中获得精准、迅速的操作反馈&#xff0c;鼠标的配置很重要&#xff0c;之前雷柏推出的支持4KHz的高回报率鼠标&#xff0c;很适合高刷显示器使用&#xff0c;最近我也上手了一款雷柏VT960 Pro。这只无线游戏鼠标采用了一种镂空“超跑”的外观设计&#xff0c;还带有个…

json格式Python、Java封装获取天猫商品详情API

根据天猫的API文档&#xff0c;获取天猫商品详情的API是通过发送Http/Post/GET请求&#xff0c;其中{item ID}是具体的商品ID。 以下是Python和Java封装获取天猫商品详情API&#xff08;复制Taobaoapi2014)的示例代码&#xff1a; 1.请求方式&#xff1a;HTTP POST GET 2.Py…

Python入门与基础语法详解

Python作为简单易学的编程语言&#xff0c;想要入门还是比较容易的 搭建语言环境 我们首先来了解下如何安装和搭建 Python 语言环境 Python 版本的选择 当前流行的 Python 版本有两个&#xff0c;2.X 和 3.X&#xff0c;由于 2.X 即将不再维护&#xff0c;所以我建议直接使用…

第一次使用linux电脑,计算机基础与Linux初次亲密接触第一天(马哥)

什么是计算机&#xff1f; 计算机(computer)俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑计算&#xff0c;还具有存储记忆功能。是能够按照程序运行&#xff0c;自动、高速处理海量数据的现代化智能电子设…

高边电流检测测量:电路和原理

摘要 : 本应用笔记介绍利用电流检测放大器、差分放大器和仪表放大器测量智能手机、平板电脑、笔记本计算机及USB附件中的电池充电和放电电流。通过对高边电流检测放大器与低边差分放大器进行了比较&#xff0c;并给出了检流电阻的选择标准。文中介绍了高电压短路器&#xff0c;…

带你了解锂电池保护板的工作原理

拆过手机或者平板的用户&#xff0c;应该都注意过&#xff0c;在手机或者平板的锂电池部分&#xff0c;其上端有一块质地较软且被塑料膜包裹起来的电路板(电池大小不同&#xff0c;电路板尺寸也不一样)。揭开塑料膜&#xff0c;你会发现&#xff0c;其上布置了很多的元器件。 …
最新文章