c# - 未序列化的结构列表列表。 System.RuntimeType 由于其保护级别而无法访问。只能处理公共(public)类型

标签 c# wcf silverlight serialization xmlserializer

我正在尝试在 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 中反序列化的动态可序列化对象。 Javascriptserializer 和 JSON 在 Silverlight 项目中不可访问。

最佳答案

可能是 public Type Type { get;放; } 字段,包含对导致错误的 RuntimeType 实例的引用。 RuntimeType 不可序列化,这是错误消息告诉您的内容。

关于c# - 未序列化的结构列表列表。 System.RuntimeType 由于其保护级别而无法访问。只能处理公共(public)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26996788/

相关文章:

java - 如何在 C# 和 Java 进程之间使用互斥体?

c# - C# 中的 Rabin-Karp 算法

WCF 自托管服务 - C# 中的端点

c# - 为什么取消订阅DataContextChanged会因Collection Modified而导致InvalidOperation异常

silverlight - 微软 Azure 和 Silverlight

c# - Silverlight 和 Azure 表存储的困难

c# - C# 中用于文本框控件的 selectall() 属性

c# - 在 C# 桌面应用程序中漂亮地打印数学

wcf - 服务器在处理请求时遇到错误。查看服务器日志以获取更多详细信息

WCF将异常传递给客户端