【发布时间】:2015-01-15 18:53:47
【问题描述】:
我正在尝试在 XML 中序列化一个对象,以便能够在 Silverlight 中反序列化它。下面贴的是代码。
StringBuilder builder = new StringBuilder();
var serializer = new XmlSerializer(data.GetType());
var writer = XmlWriter.Create(builder);
serializer.Serialize(writer, data); //error here
string xml = builder.ToString();
代码为 data
抛出此错误"System.RuntimeType is inaccessible due to its protection level. Only public types can be processed."
对象data其实是
List<List<LabelValueTypeGroup>>
其中 LabelValueType 声明为
[Serializable]
[XmlRoot]
public struct LabelValueTypeGroup/* : IEnumerable*/
{
public string Label { get; set; }
public Type Type { get; set; }
public string Value { get; set; }
public ComparisonType? ComparisonType { get; set; }
public IEnumerator GetEnumerator()
{
yield return this.Label;
yield return this.Type;
yield return this.Value;
yield return this.ComparisonType;
}
}
我做错了什么? List 是不可序列化的还是什么?为什么我这样做是因为,我想将一个对象从 WCF 传递到 Silverlight,它是由选择查询产生的,它只会选择在 xml 文件中找到的列。所以我必须创建一种可以在 Silverlight 中反序列化的动态可序列化对象。 Silverlight 项目中无法访问 Javascriptserializer 和 JSON。
【问题讨论】:
标签: c# wcf silverlight serialization xmlserializer