草庐IT

深度拷贝

全部标签

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

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

c# - 使用 Autofixture 控制对象树的生成深度

我正在尝试使用Autofixture控制对象树的生成深度。在某些情况下,我只想生成根对象,而在另一组情况下,我可能想生成达到特定深度(比方说2、3)的树。classFoo{publicstringName{get;set;}publicBarBar{get;set;}publicAnotherTypeXpto{get;set;}publicYetAnotherTypeXpto{get;set;}}classBar{publicstringName{get;set;}publicstringDescription{get;set;}publicAnotherTypeXpto{get;se

c# - 深度不可变类型的惰性初始化是否需要锁?

如果我有一个深度不可变类型(所有成员都是只读的,如果它们是引用类型成员,那么它们也引用深度不可变的对象)。我想在类型上实现一个惰性初始化属性,如下所示:privateReadOnlyCollectionm_PropName=null;publicReadOnlyCollectionPropName{get{if(null==m_PropName){ReadOnlyCollectiontemp=/*dolazyinit*/;m_PropName=temp;}returnm_PropName;}}据我所知:m_PropName=temp;...是线程安全的。我不太担心两个线程同时竞相初始化

c# - 如何在 C#.NET 中不同类型的对象之间进行深度复制

我需要按字段名称映射ObjectV1和ObjectV2之间的所有字段值和子集合。ObjectV2与ObjectV1位于不同的命名空间中。模板ClassV1和ClassV2之间的继承已被打折,因为这2个类需要独立发展。我考虑过同时使用反射(速度很慢)和二进制序列化(速度也很慢)来执行公共(public)属性的映射。是否有首选方法?还有其他选择吗? 最佳答案 作为每次都使用反射的替代方法,您可以创建一个辅助类,它使用Reflection.Emit动态创建复制方法-这意味着您只会在启动时受到性能影响。这可能会为您提供所需的灵active和

c# - 从深度嵌套的 json 对象获取数据

我真的被这个问题困扰了2天,我怎样才能从深度嵌套的json对象中获取数据。我在网上找到了一个json工具http://www.jsoneditoronline.org/http://jsonformat.com/当您将json粘贴到其中时,它会显示所有对象数组等,因此我可以深入挖掘数据并获取我想要的信息。当我调试代码并在以下位置设置断点时:foreach(rates.ToArray()中的JToken数据),取决于我尝试的内容取决于我得到的错误,最后一个错误是。Errorconvertingvalue"@rateChange"totype'Web.UI.Controllers.Home

c# - .Net Core 1.1 中的疯狂深度路径长度

有没有人在.NETCore1.1中看到一个问题,在netcoreapp1.1\publish文件夹下,他们最终有一个bin文件夹,该文件夹似乎在自身循环并最终导致路径太长消息出现在Windows中。尝试在Windows资源管理器中删除此文件夹会导致出现“源太长”消息。唯一的解决办法是使用RoboCopy.这是生成路径之一的示例:bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin\Debug\netcoreapp1.1\publish\bin

c# - 如何将kinect的深度图像与彩色图像对齐

Kinect上的颜色和深度传感器生成的图像略微不对齐。我怎样才能改变它们使它们排成一行? 最佳答案 关键是调用“Runtime.NuiCamera.GetColorPixelCoordinatesFromDepthPixel”这是运行时类的扩展方法。它返回一个WriteableBitmap对象。这个WriteableBitmap会随着新帧的到来自动更新。所以它的用法非常简单:kinect=newRuntime();kinect.Initialize(RuntimeOptions.UseColor|RuntimeOptions.Use

c# - 生成低位深度的图像文件?

bpp=每像素位数,因此32bpp表示R/G/B/A为8/8/8/8。就像.NET对这些“System.Drawing.Imaging.PixelFormat”有一个枚举。现在,一旦我有了包含我的图形的位图或图像对象,我将如何将它保存到一个文件/我将采用什么格式有什么用?什么图像文件格式(JPEG/GIF/PNG)支持低位深度,如16bpp或8bpp(而不是通常的32bpp或24bpp) 最佳答案 我不认为其他人的回答测试了他们的代码,因为GDI+PNG不支持Encoder.BitDepthEncoderParameter。事实上,

c# - 对于 C# 日志记录,如何以最小的开销获取调用堆栈深度?

我为Log4net创建了一个包装器(我可能会放弃支持NLog;我还没有决定),并且我缩进记录的消息结果以给出调用结构的想法。例如:2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.ProcessAdminCommand-ProcStart-UserInfoRepository2011-04-0300:20:30,271[CT]DEBUG-Merlinia.ProcessManager.CentralThread.StartOneProcess-UserInfoRepository2011-04-0

c# - 如何深拷贝一个实体

我找到了这段代码here:publicstaticTDeepClone(thisTobj){using(varms=newMemoryStream()){varbf=newBinaryFormatter();bf.Serialize(ms,obj);ms.Position=0;return(T)bf.Deserialize(ms);}}也就是说我们可以通过这个东西对所有相关对象进行深拷贝。我正在尝试做这样的副本:db.Detach(myEntity);myEntity.EntityKEy=null;EntitynewEntity=newEntity();newEntity=DeepCl