我有一个带有ViewModel类的UserControl作为DataContext:
XAML
<UserControl ... >
<TextBox Text="{Binding ViewModelProperty}"/>
</UserControl>
代码背后:
namespace DotfuscatorTest.UserControl.View
{
using ViewModel;
public partial class UserControlView
{
public UserControlView()
{
InitializeComponent();
DataContext = new UserControlViewModel();
}
}
}
ViewModel类:
namespace DotfuscatorTest.UserControl.ViewModel
{
internal class UserControlViewModel
{
private string viewModelProperty = "hello world";
public string ViewModelProperty
{
get { return viewModelProperty; }
set { viewModelProperty = value; }
}
}
}
此示例运行良好(数据绑定正常工作)。但是现在,当我用Dotfuscator(版本4.9.7750)混淆该程序集时,绑定不起作用。如果我将UserControlViewModel类设为public,则混淆后应用程序也可以正常运行。
据我了解,Dotfuscator不会在公共属性时更改其名称,但会在其私有或内部类时更改它。
我现在的问题是,你如何处理这个问题。我认为常见的是内部类具有在DataBindings中使用的属性,不是吗?
还是有一种方法可以配置Dotfuscator?
提前致谢,
rhe1980
最佳答案
默认情况下,Dotfuscator执行属性名称混淆(重命名),这会固有地破坏XAML绑定。它将通过重命名XAML中的绑定目标来尝试纠正此问题,但这种情况并不总是成功的。无需更改代码即可更正此错误的最简单方法是在Dotfuscator中添加重命名排除项。您应该可以在“重命名”选项卡中查找,并且可以将相关的ViewModel排除在重命名之外。
关于c# - 混淆包含内部类属性的DataBindings的Assembly,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12005151/