【发布时间】:2021-04-23 09:03:21
【问题描述】:
我有以下课程
public abstract class Settings
{
private string _filename;
protected virtual void defaults()
{
}
public static T Load<T>(string filename) where T : Settings, new()
{
T theSetting;
if (File.Exists(filename))
{
var reader = new StreamReader(filename);
var configJson = reader.ReadToEnd();
reader.Close();
theSetting = System.Text.Json.JsonSerializer.Deserialize<T>(configJson);
}
else
{
theSetting = new T();
theSetting.defaults();
}
theSetting._filename = filename;
theSetting.Save();
return theSetting;
}
public void Save()
{
var writer = new StreamWriter(_filename);
writer.Write(JsonSerializer.Serialize(this));
writer.Close();
}
public void SaveAs(string filename)
{
_filename = filename;
Save();
}
}
我知道 .NET Core 不支持多态,但我在这里找到了几个答案
Is polymorphic deserialization possible in System.Text.Json?
问题是所有的答案都是针对我们有模型类的情况但是在我的例子中,模型类没有指定并且是由用户创建的。
我也尝试了this 答案,它没有任何问题但我不想在我的项目中使用外部库
【问题讨论】:
-
I do not want to use an external library in my project为什么不呢?如果存在可以解决您遇到的问题的库,则应该使用该库而不是重新发明轮子。
标签: c# json .net-core system.text.json