我使用Microsoft.Extensions.Configuration从json文件中读取配置对象。但我不知道如何反序列化由基类派生的项填充的List<BaseClass>。我想,您必须将对象的类型存储在某个地方(比如newtonsoft的JsonConvert.SerializeObject()中的JsonConvert.SerializeObject()中的),但是我不能反序列化它。
编辑:
以下是我想要做的事情的一个例子。首先,配置项:
public abstract class Notifier
{
public string Name { get; set; }
public abstract void Notify(string message);
}
public class MailNotifier : Notifier
{
public string MailAddress { get; set; }
public override void Notify(string message)
{
Console.WriteLine("Send mail with message '" + Name + "' to " + MailAddress);
}
}
public class SmsNotifier : Notifier
{
public string PhoneNumber { get; set; }
public override void Notify(string message)
{
Console.WriteLine("Send SMS with message '" + Name + "' to " + PhoneNumber);
}
}
public class NotifierConfig
{
public List<Notifier> Notifiers { get; set; }
}理想情况下,我希望得到这样的配置:
NotifierConfig config = configuration.Get<NotifierConfig>();config.json看起来如下所示:
{
"NotifierConfig": {
"Notifiers": [
{
//"type": "MailNotifier",
"Name": "MailNotifier_Admin",
"MailAddress": "admin@somecompany.com"
},
{
//"type": "MailNotifier",
"Name": "MailNotifier_CEO",
"MailAddress": "ceo@somecompany.com"
},
{
//"type": "SmsNotifier",
"Name": "SmsNotifier_Admin",
"PhoneNumber": "1234567"
},
{
//"type": "SmsNotifier",
"Name": "SmsNotifier_CEO",
"PhoneNumber": "7654321"
}
]
}
}发布于 2021-09-07 17:51:17
我们在JsonConvert.SerializeObject(yourObject)中有一个可用的函数,除此之外还有一个重载,您可以在其中定义JsonSerializerSettings
https://stackoverflow.com/questions/69091820
复制相似问题