【发布时间】:2013-10-21 12:22:02
【问题描述】:
假设我有一个可序列化的类,例如
[Serializable]
public class DatabaseViewModel:MVVM.ObservableObject
{
//fields
//properties
public DatabaseViewModel()
{
//if a serialization file exists then deseralize and make this instance equal to it
//else initialize fields
}
}
是否可以在类内部而不是调用范围内做这样的事情?
在调用范围内我会这样做
var dbvm = new DatabaseViewModel();
然后我想让构造函数决定是创建一个新对象还是加载一个序列化对象。
在我的课堂上我试过这个
this = //my serialized object
如果我想在调用范围内这样做,我会这样做
DatabaseViewModel dbvm = null;
if(File.Exists(".../DatabaseViewModel.bin")
dbvm = //deserialize .../DatabaseViewModel.bin
else
dbvm = new DatabaseViewModel();
【问题讨论】:
-
首先,你通常不应该将 I/O 放在构造函数中,其次你不能分配给这个,你需要分别分配给每个字段
-
@RuneFS 但是如果我的字段太多怎么办?
-
@user1492051:然后你写了很多行代码,或者把它抽象成另一个方法。
-
@Jon 最好在调用范围内执行此操作?
-
@user1492051 你真正想要的是factory pattern 或builder pattern。
标签: c# class constructor this