.NET 序列化 getter 和 setter

.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 Members 上工作,而您的 visual studio 不支持它。

因此您可以将 visual studio 升级到 C# 7.0 或使用以下当前版本,

您可以使用

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

而不是

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

并对你的 class 中所有其他带有表达式主体的剩余属性执行相同的操作。