Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么类型/名称空间应该';不能改名吗?_.net_Reflection_Clr_Mono.cecil - Fatal编程技术网

.net 什么类型/名称空间应该';不能改名吗?

.net 什么类型/名称空间应该';不能改名吗?,.net,reflection,clr,mono.cecil,.net,Reflection,Clr,Mono.cecil,我是Cecil的新手,我创建了一个简单的测试。它将所有名称空间/类型重命名为随机字符串 var assembly = AssemblyDefinition.ReadAssembly(@"C:\somexe.exe"); foreach (var t in assembly.MainModule.Types) { t.Namespace = Guid.NewGuid().ToString(); t.Name = Guid.NewGuid().ToString();

我是Cecil的新手,我创建了一个简单的测试。它将所有名称空间/类型重命名为随机字符串

var assembly = AssemblyDefinition.ReadAssembly(@"C:\somexe.exe");
foreach (var t in assembly.MainModule.Types) {
    t.Namespace = Guid.NewGuid().ToString();
    t.Name = Guid.NewGuid().ToString();               
}
启动可执行文件后运行,但表单为空(它是winforms)


我以为CLR不在乎名字?我不应该重命名什么?或者我做错了什么?

很多事情,特别是在winforms中,都依赖于反射。反射非常关心名字。这也可能与资源和不匹配的资源文件有关。此外,许多属性可能包含类型信息作为字符串,这可能会影响一些事情。序列化也是如此(尤其是二进制格式化程序)


但是,如果没有更多的上下文(主要是代码),我们只能猜测。

我认为这是资源。资源名称必须与namespace.class名称匹配。那么属性呢?我也不应该重命名它们?@blez实际上,我指的是属性中的值;诸如TypeDescriptorAttribute等许多文件都可以选择将类型信息存储为文字字符串(而不是通过typeof)。如果该文字字符串不再与旧名称匹配。。。