Dotfuscator + delegate(Func<>)

时间:2014-04-08 13:00:09

标签: c# .net delegates func dotfuscator

在一个被混淆(通过命名空间)排除的类中(因为它必须被转移),我有一个带有这种构造函数的构造函数

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远程处理)。

有没有办法防止这种行为?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题:

混淆实际上没有任何关系,问题是由于客户端和服务器不是在同一个构建中生成的,这意味着编译器在每个编译时生成了两个不同的名称。

我避免使用委托类型,现在它可以工作,即使是混淆。

感谢您的帮助。