类与类之间 相同属性及字段拷贝
主要是为了应付不同类之间成员的相互赋值。节省代码量。
namespace ConsoleApplication3
{public interface interTest{}public class Test : interTest{public string Name;public int Id;public int TestId;public int Property { get; set; }}public class TestClone{public string Name;public int Id;public int CloneId;public int Property { get; set; }}public static class Logic{public static MemberTypes AllowType = MemberTypes.Field | MemberTypes.Property;public static void CloneField<T, T1>(this T instance, T1 copyTo) where T : class ,interTest, new(){var instanceType = instance.GetType();var copyType = copyTo.GetType();var copyField = copyType.GetFields();instanceType.GetFields().All(field =>{var temp = copyField.FirstOrDefault(o => o.Name.Equals(field.Name, StringComparison.CurrentCulture) && o.FieldType == field.FieldType);if (temp == null) return true;temp.SetValue(copyTo, field.GetValue(instance));return true;});}public static void CloneProperty<T, T1>(this T instance, T1 copyTo) where T : class ,interTest, new(){var instanceType = instance.GetType();var copyType = copyTo.GetType();var copyProperties = copyType.GetProperties();instanceType.GetProperties().All(property =>{var temp = copyProperties.FirstOrDefault(o => o.Name.Equals(property.Name, StringComparison.CurrentCulture) && o.PropertyType == property.PropertyType);if (temp == null) return true;temp.SetValue(copyTo, property.GetValue(instance, null), null);return true;});}}
}
class Program{static void Main(string[] args){Test t = new Test();t.Id = 1;t.Name = "shikyoh";t.TestId = 12;t.Property = 600;TestClone tc = new TestClone();t.CloneField(tc);t.CloneProperty(tc);Console.WriteLine("tc.Name:" + tc.Name);Console.WriteLine("tc.Id:" + tc.Id);Console.WriteLine("tc.Property:" + tc.Property);Console.WriteLine("tc.CloneId:" + tc.CloneId);}}
注意 类的名称必须相同,并且类型必须相同。
转载于:https://www.cnblogs.com/shikyoh/archive/2012/04/11/2442651.html
类与类之间 相同属性及字段拷贝相关推荐
- Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段
Kotlin 学习笔记(七)-- Kotlin类与对象之属性与字段 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- ...
- odoo13中的模型类(模型属性、字段属性、字段类型)
目录 1.模型属性 2.字段类型 3.字段通用参数属性 1.模型属性 模型属性 解释 _name 模型名称.使用点表示法.规范命名带模块命名空间,格式:模块名.xxx.xxx.xxx: _descri ...
- scala java 区别_Scala(和Java)中的类和类型之间有什么区别?
当您说"类型"时,我将假设您主要是指静态类型. 但是我将在短期内讨论动态类型. 静态类型是可以被静态证明的程序一部分的属性(静态表示"不运行它"). 在静态类型 ...
- C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构. 类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...
- UML类图中类之间的关系,聚合,组合,依赖总结
下面我就根据下面这个图来讲解一下UML类图. 类图 首先,看动物那个矩形框,他就表示为一个类(Class).类图分为三层: 第一层显示类的名称 如果是抽象类,就用斜体表示 第二层显示类的特性,通常是字 ...
- 详解JavaScript中ES5和ES6的类、继承之间区别和联系
导读: 很多JavaScript的初学者(比如说我)在刚开始学习这门语言的时候,往往会对函数.对象.类.继承这些概念感到迷茫和疑惑,感觉他们彼此之间长得十分相似,这就导致很难分清他们什么时候该怎么用. ...
- python:类的空间问题 类与类之间的关系
1.类的空间问题 1.1何处可以添加对象属性 class A:def __init__(self,name):self.name = namedef func(self,sex):self.sex = ...
- 浅谈UML类图中类之间的5种关系
什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...
- 类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类
常量的基本类型转换,例如:int num(10.8),这种方式是隐式转换. 通过函数的构造函数实现转换. 类类转换函数,当构造函数不能将类型转换成基本类型时.所以就有了类类转换函数,通过这种方式 ...
最新文章
- GAN:「太难的部分我就不生成了,在下告退」
- RabbitMq简单应用
- 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
- 关于Cocos2d-x中让主角运动的方法
- 消息队列—主要消息中间件优势对比
- LeetCode 1007. 行相等的最少多米诺旋转
- Python并发编程:多进程-守护进程
- android 点击热区,增大UIButton的点击热区
- python生成shell脚本_Python设置在shell脚本中自动补全功能的方法
- Android系统Audio框架介绍(一)
- Dockerfile 数据卷最佳实践
- 匿名内部类为什么访问外部类局部变量必须是final的?
- 2106_视频处理与压缩技术_中文综述
- 组织人事类主数据业务梳理以及流程编排
- TCP 协议面试灵魂 12 问(二)
- 乘法口诀测试小软件,60000道乘法口诀练习题模板(4至9以内各10000题)
- QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型
- 清除浮动的几种常用方法
- 经济学原理全部重点笔记(内部范围)
- 前嗅教你大数据:采集孔夫子旧书网
热门文章
- Metasploit Shell升级Meterpreter会话技巧
- XamarinSQLite教程创建数据表
- iOS 9音频应用播放音频之iOS 9音频播放进度
- go where 不等于_go基础之map迭代(四)
- linux怎么修改grub引导顺序,我如何更改GRUB引导顺序?
- Review Python Numpy 数组的初始化和基本操作
- java object monitor_Java-线程状态、ObjectMonitor
- 脑机接口成唯一沟通方式,渐冻症晚期父亲终向4岁儿子表达爱意
- Windows 11正式版将于10月5日推出,说好的支持安卓App没上车
- Jupyter Notebook已出现“返祖现象”,这款工具让你在终端里使用它