C# C XmlSerializer在反射类型时出错
为了传输数据,我使用XmlSerializer。但我在以下行中得到一个运行时错误:C# C XmlSerializer在反射类型时出错,c#,serialization,reflection,xml-serialization,C#,Serialization,Reflection,Xml Serialization,为了传输数据,我使用XmlSerializer。但我在以下行中得到一个运行时错误: XmlSerializer serializer = new XmlSerializer(typeof(Packets.Wrapper)); 错误是附加信息:错误反映类型“Packets.Wrapper”。。MSDN说我必须使用一个空构造函数,但它不能修复错误 该类如下所示: using System; using System.Collections.Generic; using System.Text; u
XmlSerializer serializer = new XmlSerializer(typeof(Packets.Wrapper));
错误是附加信息:错误反映类型“Packets.Wrapper”。。MSDN说我必须使用一个空构造函数,但它不能修复错误
该类如下所示:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Packets
{
[Serializable]
public class Wrapper
{
int _sID = 0;
int _sSession = 0;
PacketType _sType = PacketType.None;
AuthRequest _sAuthRequest = null;
AuthResponse _sAuthResponse = null;
ProxyRequest _sProxyRequest = null;
ProxyResponse _sProxyResponse = null;
public Wrapper()
{
}
public int ID
{
get { return _sID; }
set { _sID = value; }
}
public int Session
{
get { return _sSession; }
set { _sSession = value; }
}
public PacketType Type
{
get { return _sType; }
set { _sType = value; }
}
public AuthRequest AuthRequest
{
get { return _sAuthRequest; }
set { _sAuthRequest = value; }
}
public AuthResponse AuthResponse
{
get { return _sAuthResponse; }
set { _sAuthResponse = value; }
}
public ProxyRequest ProxyRequest
{
get { return _sProxyRequest; }
set { _sProxyRequest = value; }
}
public ProxyResponse ProxyResponse
{
get { return _sProxyResponse; }
set { _sProxyResponse = value; }
}
}
[Serializable]
public enum PacketType
{
AuthRequest,
AuthResponse,
ProxyRequest,
ProxyResponse,
None
}
[Serializable]
public enum AuthResult
{
Accepted,
Denied,
Error
}
[Serializable]
public enum ProxyAction
{
Send,
Response,
Connect,
Close
}
[Serializable]
public enum ProxyResult
{
Connected,
Sent,
Revieved,
Error
}
[Serializable]
public class AuthRequest
{
string username = null;
string password = null;
public AuthRequest()
{
}
public string Username
{
get { return username; }
set { username = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
}
[Serializable]
public class AuthResponse
{
AuthResult authResult = AuthResult.Denied;
public AuthResponse()
{
}
public AuthResult AuthResult
{
get { return authResult; }
set { authResult = value; }
}
}
[Serializable]
public class ProxyRequest
{
ProxyAction _sAction;
string _sIP = null;
int _sPort = 0;
TcpClient _sClient = null;
public ProxyRequest()
{
}
public ProxyAction Action
{
get { return _sAction; }
set { _sAction = value; }
}
public string IP
{
get { return _sIP; }
set { _sIP = value; }
}
public int Port
{
get { return _sPort; }
set { _sPort = value; }
}
public TcpClient Client
{
get { return _sClient; }
set { _sClient = value; }
}
}
[Serializable]
public class ProxyResponse
{
public ProxyResult _sResult = ProxyResult.Error;
public StringBuilder _sError = new StringBuilder();
public StringBuilder _sRecieved = new StringBuilder();
public TcpClient _sClient = null;
public ProxyResponse()
{
}
public ProxyResult Result
{
get { return _sResult; }
set { _sResult = value; }
}
public StringBuilder Error
{
get { return _sError; }
set { _sError = value; }
}
public StringBuilder Recieved
{
get { return _sRecieved; }
set { _sRecieved = value; }
}
public TcpClient Client
{
get { return _sClient; }
set { _sClient = value; }
}
}
}
我希望你能帮助我,谢谢你抽出时间。我知道了。
TcpClient不可序列化。其他类PacketType、AuthRequest、AuthResponse、ProxyRequest、ProxyResponse是什么?他们还需要有空的构造函数。他们有,但我编辑了它;。那么它现在起作用了吗?我试过你的密码,没什么问题