在一个被(通过名称空间)从混淆中排除的类中(因为它必须被传输),我有一个具有这种构造函数的构造函数
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远程处理)。
有没有办法防止这种行为?
发布于 2014-04-15 21:58:41
我找到了问题所在:
混淆实际上没有任何作用,这个问题是因为客户端和服务器不是在同一个构建中生成的,这意味着编译器在每次编译时生成两个不同的名称。
我避免了使用委托类型,现在它可以工作了,即使是模糊处理。
谢谢你的帮助。
https://stackoverflow.com/questions/22937874
复制相似问题