gpt4 book ai didi

c# - Dotfuscator 中反射错误的解决方法?

转载 作者:太空狗 更新时间:2023-10-30 00:45:08 25 4
gpt4 key购买 nike

大家好

我正在调用 Type.GetProperties(),但在运行 Dotfuscator 之后,它返回了零个项目,而之前它返回的项目数大于零。

public class Test
{
public int Number { get; set; }

public void ShowInfo()
{
Type type = this.GetType();

PropertyInfo[] props = type.GetProperties();
Console.WriteLine("type [" + type.Name + "] props count: " + props.Length);
}
}

如果我在 Dotfuscator 中从重命名中排除“Number”属性,那么它会起作用,否则它不会。但是,我不可能对项目中的所有属性都执行此操作,因为这可能会导致错误。

此方法是否有任何变通方法?或者我可以使用的其他“免费”混淆应用程序?

我已经尝试在他们的网站上查找以提交错误,但我只使用社区版,因此似乎没有那么多支持。

最佳答案

Dotfuscator 在重命名期间自动剥离属性(无论如何它们只是元数据 - 真正的工作是由自动创建的 get/set 对方法完成的)。它还重命名了底层的 get/set 方法。根据您尝试执行的操作,您需要从重命名中排除属性元数据本身或 get/set 方法(或可能两者)。

如果您需要保持属性元数据完整(例如,简单地列出类型中的属性),您可以指示 Dotfuscator 将属性从重命名中排除,方法是在“重命名排除项”选项卡上的 TreeView 中检查它们或使用自定义正则表达式属性规则。这只会排除属性元数据 - get/set 方法仍将被重命名。

如果您需要保留 get/set 方法(因为,例如,您试图通过反射获取或设置属性的值),您可以指示 Dotfuscator 通过在树中扩展属性来排除这些方法的重命名查看和检查下面的 get/set 方法,或使用自定义正则表达式方法规则。

关于c# - Dotfuscator 中反射错误的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com