草庐IT

重组单克隆二抗

全部标签

c# - 深度克隆的单元测试

假设我有一个复杂的.NET类,其中包含大量数组和其他类对象成员。我需要能够生成该对象的深度克隆-所以我编写了一个Clone()方法,并使用简单的BinaryFormatter序列化/反序列化实现它-或者我可能使用其他更容易出错的技术进行深度克隆我想确保已经过测试。好吧,现在(好吧,我应该先做)我想编写涵盖克隆的测试。该类的所有成员都是私有(private)的,而且我的架构非常好(!)以至于我不需要编写数百个公共(public)属性或其他访问器。该类不是IComparable或IEquatable,因为应用程序不需要它。我的单元测试位于生产代码的单独程序集中。人们采用什么方法来测试克隆的

c# - 是否可以克隆 IEnumerable<T> 实例,保存迭代状态的副本?

我想创建一个IEnumerator的副本这样我就可以从集合中的特定位置重新启动枚举过程。显然,对于实现IList的集合这样做没有任何好处。,因为我们可以记住感兴趣的索引。有没有一种聪明的方法可以使用yield的组合来完成这个任务?语句和Linq函数?我找不到合适的Clone()复制枚举器的方法,并希望避免使用Enumerable.Skip()将新的枚举器重新定位到所需的恢复点。此外,我希望解决方案尽可能通用,而不必依赖于任何具体集合的状态。 最佳答案 你能做的最好的事情就是写一些东西来保留一个缓冲区(可能是一个Queue)从一个而不

Git克隆、拉取最新代码、上传代码到远程仓库

文章目录工作区、暂存区、版本库1、提交代码到仓库2、pull拉取最新代码3、克隆、拉取代码,解决冲突4、git关联仓库并上传代码5、关联已有仓库并提交代码6、git记住某个仓库的账号密码工作区、暂存区、版本库工作区:就是你在电脑里能看到的目录。暂存区:英文叫stage或index。一般存放在.git目录下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。1、提交代码到仓库1)克隆或拉取最新代码//克隆gitclonehttp://xxx//拉取gitpullhttp://xxx2)

c# - 是否可以克隆 ValueType?

是否可以在不编写特定于类型的克隆代码的情况下克隆一个已知为盒装ValueType的对象?一些引用代码Listvalues=newList{3,DateTime.Now,23.4M};DuplicateLastItem(values);我遇到的特殊问题是基于值堆栈的虚拟指令机。(而且懒得写typeof(int)typeof(DateTime)……)更新我想我把自己(和其他一些人)搞糊涂了。我的工作解决方案是;Listvalues=newList{3,DateTime.Now,23.4M};//Clonevalues.Add(values[values.Count()-1]);//Over

c# - 将锯齿状数组的值克隆到第二个数组中的极快方法?

我目前正在开发一个应用程序,该应用程序负责计算锯齿状数组的随机排列。目前,应用程序中的大部分时间都花在每次迭代中复制数组上(总共100万次迭代)。在我当前的系统上,整个过程需要50秒才能完成,其中39秒用于克隆阵列。我的阵列克隆程序如下:publicstaticint[][]CopyArray(thisint[][]source){int[][]destination=newint[source.Length][];//ForeachRowfor(inty=0;y有没有安全或不安全的方法可以更快地达到与上述相同的效果? 最佳答案 这

c# - 如何在 NHibernate 中克隆对象?

如何在NHibernate中实现对象(实体)的克隆?每个实体类都有这样的属性:publicvirtualIListClubs{get;set;}另外,实体类继承了BaseObject。我尝试使用XML序列化来实现解决方案,但无法序列化接口(interface)。感谢您的回答! 最佳答案 AutoMapperhttp://automapper.codeplex.com/解决了我的问题。例如,可以通过以下方式克隆业务对象:Mapper.CreateMap();varnewtransact=newTransaction();Mapper.

c# - 克隆控件 - C# (Winform)

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Itispossibletocopyallthepropertiesofacertaincontrol?(C#windowforms)我必须创建一些类似于设计时创建的控件的控件。创建的控件应该具有与预定义控件相同的属性,或者换句话说,我想复制一个控件。是否有用于该目的的单行代码?或者我必须通过一行代码设置每个属性?我现在正在做的是:ListContainer_Category3=newFlowLayoutPanel();ListContainer_Category3.Location=ListContaine

c# - .Net 深度克隆 - 最好的方法是什么?

我需要对我的复杂对象模型执行深度克隆。您认为在.Net中实现此目的的最佳方式是什么?我考虑过序列化/反序列化无需提及MemberwiseClone还不够好。 最佳答案 如果你控制了对象模型,那么你可以写代码来做,但是维护量很大。但是,存在很多问题,这意味着除非您需要绝对最快的性能,否则序列化通常是最易于管理的答案。这是BinaryFormatter可接受的情况之一;通常我不是粉丝(由于版本控制等问题)——但由于序列化数据是立即使用的,所以这不是问题。如果你想让它快一点(但没有你自己的代码),那么protobuf-net可能会有所帮助

c# - 性能更好的克隆

我想创建深拷贝方法,我找到了3种方法来执行它1层副本,每个属性11地传递2-使用反射3-使用序列化请问他们中哪一个在性能方面最好 最佳答案 我通过三种方法的比较加上表达式树方法制作了图表。对于大量对象,反射比序列化快5倍,手动代码和表达式树比序列化快20倍。因此,性能最好的是手动代码和表达式树。链接到使用的克隆代码(2.-4.用作扩展方法):Manual:手动编写,无链接。CloningbySerializationCloningbyReflectionCloningbyExpressionTrees

c# - 如何使用 AutoMapper 深度克隆包含 IList 属性的对象

我正在尝试使用AutoMapper深度克隆以下类:publicclassMainData{publicMainData(){Details=newList();}publicintId{get;privateset;}publicDateTimeLastUpdate{get;privateset;}publicIListDetails{get;privateset;}publicintProp1{get;set;}publicintProp2{get;set;}publicvoidAddDetail(Detaildetail){Details.Add(detail);}publicvo