Получатели и установщики сериализации .NET - PullRequest
1 голос
/ 12 марта 2019

Я хочу попробовать пример десериализации .NET, но, похоже, я не могу заставить работать геттеры и сеттеры.Это мой код

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

enter image description here

1 Ответ

2 голосов
/ 12 марта 2019

Как прокомментировал @CodeCaster, вам нужно минимум C # 7.0 для работы с Членами с выражением , и ваша визуальная студия не поддерживает его.

Таким образом, вы можете обновить вашу Visual Studio до C # 7.0 или использовать ниже с текущей версией,

Вы можете использовать

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

вместо

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

И проделайте то же самое со всеми остальными свойствами в вашем классе, которые относятся к телам выражений.

...