有没有一种方法可以在 void Load() 中加载对象数据而无需单独分配每个 属性 (C#)?

Is there a way to load object data in void Load() without assigning each property separately (C#)?

我正在开发一个小型 WPF 应用程序来帮助我组织文件。 class 我将大部分数据存储在项目中,它包含应用程序使用的大部分数据。因此,它有很多我需要从文件中保存和加载的属性(大约20个,以几个为例)

public DateTime Start { get; set; }
public DateTime End { get; set; }
public Int32 Count { get; set; }
public String Name { get; set; }
public HashSet<String> Files { get; set; }

据我所知,加载对象主要有两种方式:

我。

Project.cs

public Project Load( String file ) {
    Project project = json( file );    //to shorten the question
    return project;
}

主窗口

Project project = new Project();
project = project.Load( file );

二.

Project.cs

public void Load( String file ) {
    Project project = json( file );    

    Start = project.Start;
    End = project.End;
    Count = project.Count;
    Name = project.Name;
    Files = project.Files;
}

主窗口

Project project = new Project();
project.Load( file );

我能否仍然使用 void Load() 函数,但一次分配整个对象?

我尝试使用 this = project;,但它是只读的。

Json .net 有一个 method,

使用反射的快速而肮脏的方法

 var project = Json(file);    //to shorten the question

            foreach (var prop in this.GetType().GetProperties())
            {
                prop.SetValue(this, prop.GetValue(project));
            }

            return project;

使用编译的更高效的方法这个更高级。 但是在使用 wpf 时这看起来有点不对劲,你应该使用一些 MVVM 模式,并且项目应该是你的视图的绑定上下文,你可以从 json 设置创建的对象而不复制对象.