From d8d8346d45a6185799734ff9433d95529c5338fa Mon Sep 17 00:00:00 2001
From: YFdyh000 <yfdyh000@gmail.com>
Date: Sun, 15 Mar 2020 03:23:43 +0800
Subject: [PATCH] =?UTF-8?q?IDE0017-=E7=AE=80=E5=8C=96=E5=AF=B9=E8=B1=A1?=
 =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 v2rayN/v2rayN/Base/HttpWebServerB.cs        |  12 +-
 v2rayN/v2rayN/Forms/AddServerForm.cs        |   8 +-
 v2rayN/v2rayN/Forms/MainForm.cs             |  56 +++++---
 v2rayN/v2rayN/Forms/SubSettingForm.cs       |  10 +-
 v2rayN/v2rayN/Handler/ConfigHandler.cs      | 136 ++++++++++--------
 v2rayN/v2rayN/Handler/DownloadHandle.cs     |   6 +-
 v2rayN/v2rayN/Handler/MainFormHandler.cs    |  20 +--
 v2rayN/v2rayN/Handler/QRCodeHelper.cs       |  24 ++--
 v2rayN/v2rayN/Handler/V2rayConfigHandler.cs | 151 ++++++++++++--------
 9 files changed, 255 insertions(+), 168 deletions(-)

diff --git a/v2rayN/v2rayN/Base/HttpWebServerB.cs b/v2rayN/v2rayN/Base/HttpWebServerB.cs
index a440efec..59e325dc 100644
--- a/v2rayN/v2rayN/Base/HttpWebServerB.cs
+++ b/v2rayN/v2rayN/Base/HttpWebServerB.cs
@@ -17,8 +17,10 @@ namespace v2rayN.Base
             this.port = port;
             this._responderMethod = method;
 
-            Thread thread = new Thread(StartListen);
-            thread.IsBackground = true;
+            Thread thread = new Thread(StartListen)
+            {
+                IsBackground = true
+            };
             thread.Start();
         }
 
@@ -46,8 +48,10 @@ namespace v2rayN.Base
                 }
 
                 TcpClient socket = listener.AcceptTcpClient();
-                Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread));
-                thread.IsBackground = true;
+                Thread thread = new Thread(new ParameterizedThreadStart(ProcessThread))
+                {
+                    IsBackground = true
+                };
                 thread.Start(socket);
                 Thread.Sleep(1);
             }
diff --git a/v2rayN/v2rayN/Forms/AddServerForm.cs b/v2rayN/v2rayN/Forms/AddServerForm.cs
index 816b7013..0fcf647b 100644
--- a/v2rayN/v2rayN/Forms/AddServerForm.cs
+++ b/v2rayN/v2rayN/Forms/AddServerForm.cs
@@ -207,9 +207,11 @@ namespace v2rayN.Forms
         {
             ClearServer();
 
-            OpenFileDialog fileDialog = new OpenFileDialog();
-            fileDialog.Multiselect = false;
-            fileDialog.Filter = "Config|*.json|All|*.*";
+            OpenFileDialog fileDialog = new OpenFileDialog
+            {
+                Multiselect = false,
+                Filter = "Config|*.json|All|*.*"
+            };
             if (fileDialog.ShowDialog() != DialogResult.OK)
             {
                 return;
diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs
index b4fe2be4..29d72567 100644
--- a/v2rayN/v2rayN/Forms/MainForm.cs
+++ b/v2rayN/v2rayN/Forms/MainForm.cs
@@ -271,8 +271,10 @@ namespace v2rayN.Forms
                 VmessItem item = config.vmess[k];
                 string name = item.getSummary();
 
-                ToolStripMenuItem ts = new ToolStripMenuItem(name);
-                ts.Tag = k;
+                ToolStripMenuItem ts = new ToolStripMenuItem(name)
+                {
+                    Tag = k
+                };
                 if (config.index.Equals(k))
                 {
                     ts.Checked = true;
@@ -422,8 +424,10 @@ namespace v2rayN.Forms
 
             if (config.vmess[index].configType == (int)EConfigType.Vmess)
             {
-                var fm = new AddServerForm();
-                fm.EditIndex = index;
+                var fm = new AddServerForm
+                {
+                    EditIndex = index
+                };
                 if (fm.ShowDialog() == DialogResult.OK)
                 {
                     //刷新
@@ -433,8 +437,10 @@ namespace v2rayN.Forms
             }
             else if (config.vmess[index].configType == (int)EConfigType.Shadowsocks)
             {
-                var fm = new AddServer3Form();
-                fm.EditIndex = index;
+                var fm = new AddServer3Form
+                {
+                    EditIndex = index
+                };
                 if (fm.ShowDialog() == DialogResult.OK)
                 {
                     RefreshServers();
@@ -443,8 +449,10 @@ namespace v2rayN.Forms
             }
             else if (config.vmess[index].configType == (int)EConfigType.Socks)
             {
-                var fm = new AddServer4Form();
-                fm.EditIndex = index;
+                var fm = new AddServer4Form
+                {
+                    EditIndex = index
+                };
                 if (fm.ShowDialog() == DialogResult.OK)
                 {
                     RefreshServers();
@@ -453,8 +461,10 @@ namespace v2rayN.Forms
             }
             else
             {
-                var fm2 = new AddServer2Form();
-                fm2.EditIndex = index;
+                var fm2 = new AddServer2Form
+                {
+                    EditIndex = index
+                };
                 if (fm2.ShowDialog() == DialogResult.OK)
                 {
                     //刷新
@@ -524,8 +534,10 @@ namespace v2rayN.Forms
 
         private void menuAddVmessServer_Click(object sender, EventArgs e)
         {
-            AddServerForm fm = new AddServerForm();
-            fm.EditIndex = -1;
+            AddServerForm fm = new AddServerForm
+            {
+                EditIndex = -1
+            };
             if (fm.ShowDialog() == DialogResult.OK)
             {
                 //刷新
@@ -772,9 +784,11 @@ namespace v2rayN.Forms
         {
             UI.Show(UIRes.I18N("CustomServerTips"));
 
-            OpenFileDialog fileDialog = new OpenFileDialog();
-            fileDialog.Multiselect = false;
-            fileDialog.Filter = "Config|*.json|All|*.*";
+            OpenFileDialog fileDialog = new OpenFileDialog
+            {
+                Multiselect = false,
+                Filter = "Config|*.json|All|*.*"
+            };
             if (fileDialog.ShowDialog() != DialogResult.OK)
             {
                 return;
@@ -800,8 +814,10 @@ namespace v2rayN.Forms
 
         private void menuAddShadowsocksServer_Click(object sender, EventArgs e)
         {
-            var fm = new AddServer3Form();
-            fm.EditIndex = -1;
+            var fm = new AddServer3Form
+            {
+                EditIndex = -1
+            };
             if (fm.ShowDialog() == DialogResult.OK)
             {
                 //刷新
@@ -813,8 +829,10 @@ namespace v2rayN.Forms
 
         private void menuAddSocksServer_Click(object sender, EventArgs e)
         {
-            var fm = new AddServer4Form();
-            fm.EditIndex = -1;
+            var fm = new AddServer4Form
+            {
+                EditIndex = -1
+            };
             if (fm.ShowDialog() == DialogResult.OK)
             {
                 //刷新
diff --git a/v2rayN/v2rayN/Forms/SubSettingForm.cs b/v2rayN/v2rayN/Forms/SubSettingForm.cs
index 25ac20e6..7debf6b1 100644
--- a/v2rayN/v2rayN/Forms/SubSettingForm.cs
+++ b/v2rayN/v2rayN/Forms/SubSettingForm.cs
@@ -98,10 +98,12 @@ namespace v2rayN.Forms
 
         private void AddSub()
         {
-            var subItem = new SubItem();
-            subItem.id = string.Empty;
-            subItem.remarks = "remarks";
-            subItem.url = "url";
+            var subItem = new SubItem
+            {
+                id = string.Empty,
+                remarks = "remarks",
+                url = "url"
+            };
             config.subItem.Add(subItem);
         }
     }
diff --git a/v2rayN/v2rayN/Handler/ConfigHandler.cs b/v2rayN/v2rayN/Handler/ConfigHandler.cs
index bd9d16df..2dd96ebc 100644
--- a/v2rayN/v2rayN/Handler/ConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/ConfigHandler.cs
@@ -30,34 +30,38 @@ namespace v2rayN.Handler
             }
             if (config == null)
             {
-                config = new Config();
-                config.index = -1;
-                config.logEnabled = false;
-                config.loglevel = "warning";
-                config.vmess = new List<VmessItem>();
+                config = new Config
+                {
+                    index = -1,
+                    logEnabled = false,
+                    loglevel = "warning",
+                    vmess = new List<VmessItem>(),
 
-                //Mux
-                config.muxEnabled = true;
+                    //Mux
+                    muxEnabled = true,
 
-                ////默认监听端口
-                //config.pacPort = 8888;
-                 
-                // 默认不开启统计
-                config.enableStatistics = false;
+                    ////默认监听端口
+                    //config.pacPort = 8888;
 
-                // 默认中等刷新率
-                config.statisticsFreshRate = (int)Global.StatisticsFreshRate.medium;
+                    // 默认不开启统计
+                    enableStatistics = false,
+
+                    // 默认中等刷新率
+                    statisticsFreshRate = (int)Global.StatisticsFreshRate.medium
+                };
             }
 
             //本地监听
             if (config.inbound == null)
             {
                 config.inbound = new List<InItem>();
-                InItem inItem = new InItem();
-                inItem.protocol = Global.InboundSocks;
-                inItem.localPort = 10808;
-                inItem.udpEnabled = true;
-                inItem.sniffingEnabled = true;
+                InItem inItem = new InItem
+                {
+                    protocol = Global.InboundSocks,
+                    localPort = 10808,
+                    udpEnabled = true,
+                    sniffingEnabled = true
+                };
 
                 config.inbound.Add(inItem);
 
@@ -100,14 +104,16 @@ namespace v2rayN.Handler
             //kcp
             if (config.kcpItem == null)
             {
-                config.kcpItem = new KcpItem();
-                config.kcpItem.mtu = 1350;
-                config.kcpItem.tti = 50;
-                config.kcpItem.uplinkCapacity = 12;
-                config.kcpItem.downlinkCapacity = 100;
-                config.kcpItem.readBufferSize = 2;
-                config.kcpItem.writeBufferSize = 2;
-                config.kcpItem.congestion = false;
+                config.kcpItem = new KcpItem
+                {
+                    mtu = 1350,
+                    tti = 50,
+                    uplinkCapacity = 12,
+                    downlinkCapacity = 100,
+                    readBufferSize = 2,
+                    writeBufferSize = 2,
+                    congestion = false
+                };
             }
             if (config.uiItem == null)
             {
@@ -259,20 +265,22 @@ namespace v2rayN.Handler
                 return -1;
             }
 
-            VmessItem vmessItem = new VmessItem();
-            vmessItem.configVersion = config.vmess[index].configVersion;
-            vmessItem.configType = config.vmess[index].configType;
-            vmessItem.address = config.vmess[index].address;
-            vmessItem.port = config.vmess[index].port;
-            vmessItem.id = config.vmess[index].id;
-            vmessItem.alterId = config.vmess[index].alterId;
-            vmessItem.security = config.vmess[index].security;
-            vmessItem.network = config.vmess[index].network;
-            vmessItem.headerType = config.vmess[index].headerType;
-            vmessItem.requestHost = config.vmess[index].requestHost;
-            vmessItem.path = config.vmess[index].path;
-            vmessItem.streamSecurity = config.vmess[index].streamSecurity;
-            vmessItem.remarks = string.Format("{0}-clone", config.vmess[index].remarks);
+            VmessItem vmessItem = new VmessItem
+            {
+                configVersion = config.vmess[index].configVersion,
+                configType = config.vmess[index].configType,
+                address = config.vmess[index].address,
+                port = config.vmess[index].port,
+                id = config.vmess[index].id,
+                alterId = config.vmess[index].alterId,
+                security = config.vmess[index].security,
+                network = config.vmess[index].network,
+                headerType = config.vmess[index].headerType,
+                requestHost = config.vmess[index].requestHost,
+                path = config.vmess[index].path,
+                streamSecurity = config.vmess[index].streamSecurity,
+                remarks = string.Format("{0}-clone", config.vmess[index].remarks)
+            };
 
             config.vmess.Insert(index + 1, vmessItem); // 插入到下一项
 
@@ -345,18 +353,20 @@ namespace v2rayN.Handler
                 VmessItem vmessItem = config.vmess[index];
                 if (vmessItem.configType == (int)EConfigType.Vmess)
                 {
-                    VmessQRCode vmessQRCode = new VmessQRCode();
-                    vmessQRCode.v = vmessItem.configVersion.ToString();
-                    vmessQRCode.ps = vmessItem.remarks.TrimEx(); //备注也许很长 ;
-                    vmessQRCode.add = vmessItem.address;
-                    vmessQRCode.port = vmessItem.port.ToString();
-                    vmessQRCode.id = vmessItem.id;
-                    vmessQRCode.aid = vmessItem.alterId.ToString();
-                    vmessQRCode.net = vmessItem.network;
-                    vmessQRCode.type = vmessItem.headerType;
-                    vmessQRCode.host = vmessItem.requestHost;
-                    vmessQRCode.path = vmessItem.path;
-                    vmessQRCode.tls = vmessItem.streamSecurity;
+                    VmessQRCode vmessQRCode = new VmessQRCode
+                    {
+                        v = vmessItem.configVersion.ToString(),
+                        ps = vmessItem.remarks.TrimEx(), //备注也许很长 ;
+                        add = vmessItem.address,
+                        port = vmessItem.port.ToString(),
+                        id = vmessItem.id,
+                        aid = vmessItem.alterId.ToString(),
+                        net = vmessItem.network,
+                        type = vmessItem.headerType,
+                        host = vmessItem.requestHost,
+                        path = vmessItem.path,
+                        tls = vmessItem.streamSecurity
+                    };
 
                     url = Utils.ToJson(vmessQRCode);
                     url = Utils.Base64Encode(url);
@@ -535,10 +545,12 @@ namespace v2rayN.Handler
                 return -1;
             }
 
-            VmessItem vmessItem = new VmessItem();
-            vmessItem.address = newFileName;
-            vmessItem.configType = (int)EConfigType.Custom;
-            vmessItem.remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString());
+            VmessItem vmessItem = new VmessItem
+            {
+                address = newFileName,
+                configType = (int)EConfigType.Custom,
+                remarks = string.Format("import custom@{0}", DateTime.Now.ToShortDateString())
+            };
 
             config.vmess.Add(vmessItem);
             if (config.vmess.Count == 1)
@@ -799,10 +811,12 @@ namespace v2rayN.Handler
                 }
             }
 
-            var subItem = new SubItem();
-            subItem.id = string.Empty;
-            subItem.remarks = "import sub";
-            subItem.url = url;
+            var subItem = new SubItem
+            {
+                id = string.Empty,
+                remarks = "import sub",
+                url = url
+            };
             config.subItem.Add(subItem);
 
             return SaveSubItem(ref config);
diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs
index 15aaf93b..d4286a0e 100644
--- a/v2rayN/v2rayN/Handler/DownloadHandle.cs
+++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs
@@ -60,8 +60,10 @@ namespace v2rayN.Handler
         public async Task CheckUpdateAsync(string type)
         {
             Utils.SetSecurityProtocol();
-            WebRequestHandler webRequestHandler = new WebRequestHandler();
-            webRequestHandler.AllowAutoRedirect = false;
+            WebRequestHandler webRequestHandler = new WebRequestHandler
+            {
+                AllowAutoRedirect = false
+            };
             HttpClient httpClient = new HttpClient(webRequestHandler);
 
             string url;
diff --git a/v2rayN/v2rayN/Handler/MainFormHandler.cs b/v2rayN/v2rayN/Handler/MainFormHandler.cs
index 26b7afb0..d8043f02 100644
--- a/v2rayN/v2rayN/Handler/MainFormHandler.cs
+++ b/v2rayN/v2rayN/Handler/MainFormHandler.cs
@@ -85,10 +85,12 @@ namespace v2rayN.Handler
                 return;
             }
 
-            SaveFileDialog fileDialog = new SaveFileDialog();
-            fileDialog.Filter = "Config|*.json";
-            fileDialog.FilterIndex = 2;
-            fileDialog.RestoreDirectory = true;
+            SaveFileDialog fileDialog = new SaveFileDialog
+            {
+                Filter = "Config|*.json",
+                FilterIndex = 2,
+                RestoreDirectory = true
+            };
             if (fileDialog.ShowDialog() != DialogResult.OK)
             {
                 return;
@@ -124,10 +126,12 @@ namespace v2rayN.Handler
                 return;
             }
 
-            SaveFileDialog fileDialog = new SaveFileDialog();
-            fileDialog.Filter = "Config|*.json";
-            fileDialog.FilterIndex = 2;
-            fileDialog.RestoreDirectory = true;
+            SaveFileDialog fileDialog = new SaveFileDialog
+            {
+                Filter = "Config|*.json",
+                FilterIndex = 2,
+                RestoreDirectory = true
+            };
             if (fileDialog.ShowDialog() != DialogResult.OK)
             {
                 return;
diff --git a/v2rayN/v2rayN/Handler/QRCodeHelper.cs b/v2rayN/v2rayN/Handler/QRCodeHelper.cs
index e5433dec..a24de2d7 100644
--- a/v2rayN/v2rayN/Handler/QRCodeHelper.cs
+++ b/v2rayN/v2rayN/Handler/QRCodeHelper.cs
@@ -16,18 +16,22 @@ namespace v2rayN.Handler
             Image img = null;
             try
             {
-                QrCodeEncodingOptions options = new QrCodeEncodingOptions();
-                options.CharacterSet = "UTF-8";
-                options.DisableECI = true; // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
-                options.ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M; // 纠错级别
-                options.Width = 500;
-                options.Height = 500;
-                options.Margin = 1;
+                QrCodeEncodingOptions options = new QrCodeEncodingOptions
+                {
+                    CharacterSet = "UTF-8",
+                    DisableECI = true, // Extended Channel Interpretation (ECI) 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。
+                    ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.M, // 纠错级别
+                    Width = 500,
+                    Height = 500,
+                    Margin = 1
+                };
                 // options.Hints,更多属性,也可以在这里添加。
 
-                BarcodeWriter writer = new BarcodeWriter();
-                writer.Format = BarcodeFormat.QR_CODE;
-                writer.Options = options;
+                BarcodeWriter writer = new BarcodeWriter
+                {
+                    Format = BarcodeFormat.QR_CODE,
+                    Options = options
+                };
                 Bitmap bmp = writer.Write(strContent);
                 img = (Image)bmp;
                 return img;
diff --git a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
index fb72a4eb..c9288b65 100644
--- a/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
+++ b/v2rayN/v2rayN/Handler/V2rayConfigHandler.cs
@@ -226,16 +226,20 @@ namespace v2rayN.Handler
                     && userRule.Count > 0)
                 {
                     //Domain
-                    RulesItem rulesDomain = new RulesItem();
-                    rulesDomain.type = "field";
-                    rulesDomain.outboundTag = tag;
-                    rulesDomain.domain = new List<string>();
+                    RulesItem rulesDomain = new RulesItem
+                    {
+                        type = "field",
+                        outboundTag = tag,
+                        domain = new List<string>()
+                    };
 
                     //IP
-                    RulesItem rulesIP = new RulesItem();
-                    rulesIP.type = "field";
-                    rulesIP.outboundTag = tag;
-                    rulesIP.ip = new List<string>();
+                    RulesItem rulesIP = new RulesItem
+                    {
+                        type = "field",
+                        outboundTag = tag,
+                        ip = new List<string>()
+                    };
 
                     foreach (string u in userRule)
                     {
@@ -283,10 +287,12 @@ namespace v2rayN.Handler
                     //IP
                     if (ipOrDomain == "ip" || ipOrDomain == "")
                     {
-                        RulesItem rulesItem = new RulesItem();
-                        rulesItem.type = "field";
-                        rulesItem.outboundTag = Global.directTag;
-                        rulesItem.ip = new List<string>();
+                        RulesItem rulesItem = new RulesItem
+                        {
+                            type = "field",
+                            outboundTag = Global.directTag,
+                            ip = new List<string>()
+                        };
                         rulesItem.ip.Add($"geoip:{code}");
 
                         v2rayConfig.routing.rules.Add(rulesItem);
@@ -294,10 +300,12 @@ namespace v2rayN.Handler
 
                     if (ipOrDomain == "domain" || ipOrDomain == "")
                     {
-                        RulesItem rulesItem = new RulesItem();
-                        rulesItem.type = "field";
-                        rulesItem.outboundTag = Global.directTag;
-                        rulesItem.domain = new List<string>();
+                        RulesItem rulesItem = new RulesItem
+                        {
+                            type = "field",
+                            outboundTag = Global.directTag,
+                            domain = new List<string>()
+                        };
                         rulesItem.domain.Add($"geosite:{code}");
                         v2rayConfig.routing.rules.Add(rulesItem);
                     }
@@ -412,10 +420,12 @@ namespace v2rayN.Handler
                     if (!Utils.IsNullOrEmpty(config.security())
                         && !Utils.IsNullOrEmpty(config.id()))
                     {
-                        var socksUsersItem = new SocksUsersItem();
-                        socksUsersItem.user = config.security();
-                        socksUsersItem.pass = config.id();
-                        socksUsersItem.level = 1;
+                        var socksUsersItem = new SocksUsersItem
+                        {
+                            user = config.security(),
+                            pass = config.id(),
+                            level = 1
+                        };
 
                         serversItem.users = new List<SocksUsersItem>() { socksUsersItem };
                     }
@@ -452,8 +462,10 @@ namespace v2rayN.Handler
                 {
                     streamSettings.security = config.streamSecurity();
 
-                    TlsSettings tlsSettings = new TlsSettings();
-                    tlsSettings.allowInsecure = config.allowInsecure();
+                    TlsSettings tlsSettings = new TlsSettings
+                    {
+                        allowInsecure = config.allowInsecure()
+                    };
                     if (!string.IsNullOrWhiteSpace(host))
                     {
                         tlsSettings.serverName = host;
@@ -466,9 +478,11 @@ namespace v2rayN.Handler
                 {
                     //kcp基本配置暂时是默认值,用户能自己设置伪装类型
                     case "kcp":
-                        KcpSettings kcpSettings = new KcpSettings();
-                        kcpSettings.mtu = config.kcpItem.mtu;
-                        kcpSettings.tti = config.kcpItem.tti;
+                        KcpSettings kcpSettings = new KcpSettings
+                        {
+                            mtu = config.kcpItem.mtu,
+                            tti = config.kcpItem.tti
+                        };
                         if (iobound.Equals("out"))
                         {
                             kcpSettings.uplinkCapacity = config.kcpItem.uplinkCapacity;
@@ -488,20 +502,26 @@ namespace v2rayN.Handler
                         kcpSettings.congestion = config.kcpItem.congestion;
                         kcpSettings.readBufferSize = config.kcpItem.readBufferSize;
                         kcpSettings.writeBufferSize = config.kcpItem.writeBufferSize;
-                        kcpSettings.header = new Header();
-                        kcpSettings.header.type = config.headerType();
+                        kcpSettings.header = new Header
+                        {
+                            type = config.headerType()
+                        };
                         streamSettings.kcpSettings = kcpSettings;
                         break;
                     //ws
                     case "ws":
-                        WsSettings wsSettings = new WsSettings();
-                        wsSettings.connectionReuse = true;
+                        WsSettings wsSettings = new WsSettings
+                        {
+                            connectionReuse = true
+                        };
 
                         string path = config.path();
                         if (!string.IsNullOrWhiteSpace(host))
                         {
-                            wsSettings.headers = new Headers();
-                            wsSettings.headers.Host = host;
+                            wsSettings.headers = new Headers
+                            {
+                                Host = host
+                            };
                         }
                         if (!string.IsNullOrWhiteSpace(path))
                         {
@@ -535,11 +555,15 @@ namespace v2rayN.Handler
                         break;
                     //quic
                     case "quic":
-                        QuicSettings quicsettings = new QuicSettings();
-                        quicsettings.security = host;
-                        quicsettings.key = config.path();
-                        quicsettings.header = new Header();
-                        quicsettings.header.type = config.headerType();
+                        QuicSettings quicsettings = new QuicSettings
+                        {
+                            security = host,
+                            key = config.path(),
+                            header = new Header
+                            {
+                                type = config.headerType()
+                            }
+                        };
                         streamSettings.quicSettings = quicsettings;
                         if (config.streamSecurity() == Global.StreamSecurity)
                         {
@@ -550,10 +574,14 @@ namespace v2rayN.Handler
                         //tcp带http伪装
                         if (config.headerType().Equals(Global.TcpHeaderHttp))
                         {
-                            TcpSettings tcpSettings = new TcpSettings();
-                            tcpSettings.connectionReuse = true;
-                            tcpSettings.header = new Header();
-                            tcpSettings.header.type = config.headerType();
+                            TcpSettings tcpSettings = new TcpSettings
+                            {
+                                connectionReuse = true,
+                                header = new Header
+                                {
+                                    type = config.headerType()
+                                }
+                            };
 
                             if (iobound.Equals("out"))
                             {
@@ -616,8 +644,10 @@ namespace v2rayN.Handler
                     //}
                 }
                 //servers.Add("localhost");
-                v2rayConfig.dns = new Mode.Dns();
-                v2rayConfig.dns.servers = servers;
+                v2rayConfig.dns = new Mode.Dns
+                {
+                    servers = servers
+                };
             }
             catch
             {
@@ -662,10 +692,12 @@ namespace v2rayN.Handler
 
                 if (!v2rayConfig.routing.rules.Exists(item => { return item.outboundTag == tag; }))
                 {
-                    var apiRoutingRule = new Mode.RulesItem();
-                    apiRoutingRule.inboundTag = new List<string> { tag };
-                    apiRoutingRule.outboundTag = tag;
-                    apiRoutingRule.type = "field";
+                    var apiRoutingRule = new Mode.RulesItem
+                    {
+                        inboundTag = new List<string> { tag },
+                        outboundTag = tag,
+                        type = "field"
+                    };
                     v2rayConfig.routing.rules.Add(apiRoutingRule);
                 }
             }
@@ -1345,9 +1377,10 @@ namespace v2rayN.Handler
 
         private static VmessItem ResolveVmess4Kitsunebi(string result)
         {
-            VmessItem vmessItem = new VmessItem();
-
-            vmessItem.configType = (int)EConfigType.Vmess;
+            VmessItem vmessItem = new VmessItem
+            {
+                configType = (int)EConfigType.Vmess
+            };
             result = result.Substring(Global.vmessProtocol.Length);
             int indexSplit = result.IndexOf("?");
             if (indexSplit > 0)
@@ -1435,10 +1468,12 @@ namespace v2rayN.Handler
 
                     configCopy.index = index;
 
-                    var inbound = new Inbounds();
-                    inbound.listen = Global.Loopback;
-                    inbound.port = httpPort + index;
-                    inbound.protocol = Global.InboundHttp;
+                    var inbound = new Inbounds
+                    {
+                        listen = Global.Loopback,
+                        port = httpPort + index,
+                        protocol = Global.InboundHttp
+                    };
                     inbound.tag = Global.InboundHttp + inbound.port.ToString();
                     v2rayConfig.inbounds.Add(inbound);
 
@@ -1448,10 +1483,12 @@ namespace v2rayN.Handler
                     v2rayConfigCopy.outbounds[0].tag = Global.agentTag + inbound.port.ToString();
                     v2rayConfig.outbounds.Add(v2rayConfigCopy.outbounds[0]);
 
-                    var rule = new Mode.RulesItem();
-                    rule.inboundTag = new List<string> { inbound.tag };
-                    rule.outboundTag = v2rayConfigCopy.outbounds[0].tag;
-                    rule.type = "field";
+                    var rule = new Mode.RulesItem
+                    {
+                        inboundTag = new List<string> { inbound.tag },
+                        outboundTag = v2rayConfigCopy.outbounds[0].tag,
+                        type = "field"
+                    };
                     v2rayConfig.routing.rules.Add(rule);
                 }