Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C XmlSerializer在反射类型时出错_C#_Serialization_Reflection_Xml Serialization - Fatal编程技术网

C# C 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。但我在以下行中得到一个运行时错误:

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是什么?他们还需要有空的构造函数。他们有,但我编辑了它;。那么它现在起作用了吗?我试过你的密码,没什么问题