Tim*_*Tim 5 c# xml access-modifiers xml-serialization
我正在尝试将XML序列化添加到C#中相当简单的类结构中.本质上,有一个根类的实例(称为AClass),它包含一些其他类的几个实例的List(称之为AnotherClass):
[XmlRoot("RootNode")]
public class AClass {
[XmlElement("ListNode")]
internal List otherObjects { get; set; }
}
public class AnotherClass {
[XmlAttribute("Name")]
internal string name { get; set; }
}Run Code Online (Sandbox Code Playgroud)
在序列化时,我希望将这两个类序列化在一起 - 也就是说,如果我序列化了AClass,它的AnotherClass列表也会被序列化(请参阅此问题).
我有这个主要工作,但问题是在序列化过程中,XmlSerializer似乎只想处理public类的属性 - 如果声明列表,它根本不会序列化AnotherClass internal.
我试着让程序集的内部对序列化程序可见:
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Xml")]Run Code Online (Sandbox Code Playgroud)
这似乎没有做任何事情.有没有办法让XmlSerializer递归序列化内部声明的对象列表?
你是在正确的轨道上...除了实际的序列化不是由System.Xml执行,而是由动态生成的程序集.您无法预测该程序集的名称(它是随机生成的),因此您无法在该InternalsVisibleTo属性中使用它.
唯一的解决方案是预生成XML序列化程序集.您可以使用XML Serializer Generator Tool(Sgen.exe)执行此操作.生成的程序集的名称将是"YourAssembly.XmlSerializers"; 这是你必须在InternalsVisibleTo属性中使用的名称.
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |