【问题标题】:XmlSerializer obfuscation support?XmlSerializer 混淆支持?
【发布时间】:2011-07-23 16:10:37
【问题描述】:

我有以下

[XmlType("设置")]
公开课设置
{
    [XmlElement("目录")]
    公共字符串目录 { 获取;放; }

    公共设置()
    {
        目录 = "/"
    }
}

但是当我的程序被混淆时,它会抱怨它不符合 CLS。我认为在属性中声明名称会起作用,但显然不行。有没有办法在不排除混淆的情况下解决这个问题?另外,您如何删除诸如

之类的东西
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

【问题讨论】:

    标签: c#


    【解决方案1】:

    一种可能的方法是在运行时使用 XmlAttributeOverrides 构建模型(并缓存最终的 XmlSerializer,这在使用方法时是必不可少的)。这里的小问题是您需要将成员名称作为字符串告诉它,但是有一些方法可以使用 Expression API 来做到这一点,这样用户就可以使用GetMemberName<Foo>(foo => foo.Bar) 之类的东西。由于表达式树直接与 MemberInfo 一起操作,这应该返回混淆的名称,而不是“Bar”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2023-02-20
      • 2011-06-27
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多