C#下XML序列化出现System.InvalidOperationException的一种解释
2014-01-16 11:25
501 查看
Type.IsGenericParameter属性为false
当某个类的IsGenericParameter属性为false时,是表示该类为非泛型类或方法。
此时,如果该类的变量中或者方法的参数,包含泛型变量,则会产生该错误。
public class XXXX : MsgParent, IMsg
{
public XXXX()
{
this.MessageType = "XXXX";
}
/// <summary>
/// 确认队列
/// </summary>
public Queue<int> queue = new Queue<int>();
/// <summary>
///
/// </summary>
public int AlarmID = 0;
public string Serialize()
{
string strSource = "";
try
{
XmlSerializer s = new XmlSerializer(typeof(XXXXX));
Stream stream = new MemoryStream();
s.Serialize(stream, this);
stream.Seek(0, SeekOrigin.Begin);
using (StreamReader reader = new StreamReader(stream))
{
strSource = reader.ReadToEnd();
}
}
catch { }
return strSource;
}
public static XXXXX Deserialize(string xmlSource)
{
XXXXX obj = new XXXXX();
try
{
XmlSerializer x = new XmlSerializer(typeof(XXXXX));
Stream stream = ProtocolHelper.GetStream(xmlSource);
stream.Seek(0, SeekOrigin.Begin);
obj = (XXXXX)x.Deserialize(stream);
stream.Close();
}
catch
{ }
return obj;
}
}
}
例如这样,就可能产生XML序列化出错。如果把Queue去掉的话,该问题又解决了。
但是这样又多出了许多麻烦。想要用到数据结构存储的话,就难免出现这样。如果是自己写一个数据结构(不用泛型),我想应该是可以的吧。
http://msdn.microsoft.com/zh-cn/library/system.type.isgenericparameter.aspx
MSDN上的参考资料。
当某个类的IsGenericParameter属性为false时,是表示该类为非泛型类或方法。
此时,如果该类的变量中或者方法的参数,包含泛型变量,则会产生该错误。
public class XXXX : MsgParent, IMsg
{
public XXXX()
{
this.MessageType = "XXXX";
}
/// <summary>
/// 确认队列
/// </summary>
public Queue<int> queue = new Queue<int>();
/// <summary>
///
/// </summary>
public int AlarmID = 0;
public string Serialize()
{
string strSource = "";
try
{
XmlSerializer s = new XmlSerializer(typeof(XXXXX));
Stream stream = new MemoryStream();
s.Serialize(stream, this);
stream.Seek(0, SeekOrigin.Begin);
using (StreamReader reader = new StreamReader(stream))
{
strSource = reader.ReadToEnd();
}
}
catch { }
return strSource;
}
public static XXXXX Deserialize(string xmlSource)
{
XXXXX obj = new XXXXX();
try
{
XmlSerializer x = new XmlSerializer(typeof(XXXXX));
Stream stream = ProtocolHelper.GetStream(xmlSource);
stream.Seek(0, SeekOrigin.Begin);
obj = (XXXXX)x.Deserialize(stream);
stream.Close();
}
catch
{ }
return obj;
}
}
}
例如这样,就可能产生XML序列化出错。如果把Queue去掉的话,该问题又解决了。
但是这样又多出了许多麻烦。想要用到数据结构存储的话,就难免出现这样。如果是自己写一个数据结构(不用泛型),我想应该是可以的吧。
http://msdn.microsoft.com/zh-cn/library/system.type.isgenericparameter.aspx
MSDN上的参考资料。
相关文章推荐
- c# 调用MD5CryptoServiceProvider出现 System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
- 困扰:C#.net 连接Oracle11g 不报错但是在connection时出现 ServerVersion 引发了“System.InvalidOperationException”类型的异常
- C#之解决 未处理的“System.InvalidOperationException”类型的异常出现在 System.dll中...
- C#之解决 未处理的“System.InvalidOperationException”类型的异常出现在 System.dll中...
- C# ServerVersion = “Conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常
- 在 System.InvalidOperationException 中第一次偶然出现的“System.Xml.dll”类型的异常
- 刷新共享对象管理器缓存时发生意外错误。System.InvalidOperationException:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并
- asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决
- ”System.InvalidOperationException”类型的未经处理的异常出现在 mscorlib.dll 中
- System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- Win中配置Dizcuz!NT 时出现System.InvalidOperationException: 无法生成临时类 (result=1)。
- System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- C# ServerVersion = “Conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常
- System.InvalidOperationException: 哈希表插入失败。加载因子太高。
- System.InvalidOperationException: 集合已修改;可能无法执行枚举操作。
- C# post数据时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法
- System.InvalidOperationException : 不应有 <Response xmlns=''>。
- ServerVersion 引发了“System.InvalidOperationException”类型的异常
- C# Webservice 解决在运行配置文件中指定的扩展时出现异常。 ---> System.Web.HttpException: 超过了最大请求长度问
- System.InvalidOperationException: ConnectionString 属性尚未初始化。