小编Ora*_* SA的帖子

Windows批处理SET内部IF无法正常工作

当我运行此脚本时(来自.bat文件):

set var1=true
if "%var1%"=="true" (
  set var2=myvalue
  echo %var2%
)
Run Code Online (Sandbox Code Playgroud)

我总是得到:

ECHO is on.
Run Code Online (Sandbox Code Playgroud)

意思是var2变量没有真正设置.谁能帮助我理解为什么?

windows cmd batch-file delayedvariableexpansion

87
推荐指数
2
解决办法
6万
查看次数

使用devenv.com编译安装项目 - "错误:无法更新项目的依赖项"

我在VS 2010中有一个安装部署项目.该项目与VS 2010的GUI界面完美编译,但是当我尝试通过vs cmd(devenv.com)编译它时,它会出现这个错误:

ERROR: Unable to update the dependencies of the project.
Run Code Online (Sandbox Code Playgroud)

请注意,错误中没有提到的dll(例如,错误不包含"无法确定对象'xxx'的依赖关系").

请不要告诉我清理此设置中的所有文件并从头开始 - 这不是一个真正的解决方案!我有5个项目有这个确切的错误,我不想重新安排每一个.更重要的是,这并不能保证我将来不会再出现这个问题.

非常感谢!

vdproj visual-studio-2010 devenv

27
推荐指数
4
解决办法
4万
查看次数

在C#中创建深层复制

我想制作一个对象的深层副本,这样我就可以更改新副本,并且仍然可以选择取消我的更改并取回原始对象.

我的问题是,对象可以是任何类型,即使是来自未知的程序集.我不能使用BinaryFormatterXmlSerializer,因为该对象不必具有[Serializable]属性.

我试过这个Object.MemberwiseClone()方法:

public object DeepCopy(object obj)
{
    var memberwiseClone = typeof(object).GetMethod("MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic);

    var newCopy = memberwiseClone.Invoke(obj, new object[0]);

    foreach (var field in newCopy.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
    {
        if (!field.FieldType.IsPrimitive && field.FieldType != typeof(string))
        {
            var fieldCopy = DeepCopy(field.GetValue(newCopy));
            field.SetValue(newCopy, fieldCopy);
        }
    }
    return newCopy;
}
Run Code Online (Sandbox Code Playgroud)

这个问题是,它不是在可枚举(数组,列表等),而不是在字典上.

那么,如何在C#中创建未知对象的深层副本?

TNX很多!

c# deep-copy

12
推荐指数
1
解决办法
8752
查看次数