在一个被混淆(通过命名空间)排除的类中(因为它必须被转移),我有一个带有这种构造函数的构造函数
public MyClass<T> (T currentObject, Func<T, int> extrator) : where T : XYZ{}
当我调用构造函数时,我会执行类似
的操作new MyClass(myObject, o=>o.Id)
编译后我看到在解压缩时添加了一个静态方法:
[CompilerGenerated]
private static int <.ctor>b__b(CurrentObjectClass e)
{
return e.Id;
}
因为它是一个方法,并且我的命名空间被排除在外,所以我期待这个类不会被改变。但是在dotfuscator出现后,我得到了这个:
[CompilerGenerated]
private static int <.ctor>b__5(CurrentObjectClass e)
{
//Obfuscated code
}
由于我在客户端和服务器之间使用此类,因此经常会发生服务器与发布(模糊处理)和客户端仅在调试中运行,因此我们希望此类不被混淆以允许此类交换(通过.Net远程处理)。
有没有办法防止这种行为?
答案 0 :(得分:0)
我发现了这个问题:
混淆实际上没有任何关系,问题是由于客户端和服务器不是在同一个构建中生成的,这意味着编译器在每个编译时生成了两个不同的名称。
我避免使用委托类型,现在它可以工作,即使是混淆。
感谢您的帮助。