假设我们有一个如下定义的对象A:
public class ObjectA {
private Attribute a1;
private Attribute a2;
private Attribute a3;
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我需要创建仅包含对象A的前两个属性的第二个对象B:
public class ObjectB {
private Attribute a1;
private Attribute a2;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:将对象A复制到对象B的最佳方法是什么?我一直在一个接一个地复制getter和setter的属性,但是有些事情告诉我,必须有更好的方法来做到这一点!尤其是当对象具有很多属性时,我必须编写一行代码,仅将它们全部复制到第二个对象B中。
非常感谢 :)
编辑:我一直被“另一个问题的可能重复”警告:我如何在Java中复制对象?
我的问题在某种程度上略有不同,即我正在处理2个具有相同属性但不完全相同的对象!
当我尝试在当前用户没有写入权限的文件夹中运行它时,应用程序崩溃.
所以我的问题是,.net应用程序是否默认创建父文件夹中的临时文件?
如果是,我们是否可以显式设置路径来设置应用程序具有写访问权限的外部文件夹以创建其临时文件?
谢谢
编辑:我回来了更多的细节...所以异常是一个System.UnauthorizedAccessException,它尝试创建的文件命名为"l1m5tzj4.tmp"
所以我现在确定.NET应用程序正在尝试在当前文件夹中创建一个临时文件...
这是堆栈跟踪
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
at System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
at System.CodeDom.Compiler.TempFileCollection.get_BasePath()
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension)
at System.Configuration.Internal.WriteFileContext..ctor(String filename, String templateFilename) …Run Code Online (Sandbox Code Playgroud)