.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 中所有其他带有表达式主体的剩余属性执行相同的操作。
我想尝试一个 .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 中所有其他带有表达式主体的剩余属性执行相同的操作。