簡體   English   中英

.NET序列化獲取器和設置器

[英].NET Serialization getters and setters

我想嘗試一個.NET反序列化示例,但似乎無法使getter和setter正常工作。 這是我的代碼

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;

namespace WindowsFormsApplication3

{
    [XmlRoot]
    public class TestClass
    {
        public string classname;
        private string name;
        private int age;
        [XmlAttribute]
        public string Classname { get => classname; set => classname = value; }
        [XmlElement]
        public string Name { get => name; set => name = value; }
        [XmlElement]
        public int Age { get=>age; set => age = value; }
        public override string ToString()
        {
            return base.ToString();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            TestClass testClass = new TestClass();
            testClass.Classname = "test";
            testClass.Name = "william";
            testClass.Age = 50;
            Console.WriteLine("Hello World!");
            MessageBox.Show("Test");

        }
    }
}

而且在get聲明中出現以下錯誤: Not all code paths return a value

在此處輸入圖片說明

正如@CodeCaster所評論的那樣,您至少需要C#7.0才能在Expression- Bodied Member上變通,而Visual Studio不支持它。

因此,您可以將Visual Studio升級到C#7.0或在當前版本中使用以下版本,

您可以使用

public string Classname
{
    get { return classname; }
    set { classname = value; }
}

代替

public string Classname
{
    get => classname;
    set => classname = value;
}

並對類中具有表達式主體的所有其他其余屬性執行相同的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM