0
我想从后台应用程序发送参数设置到前端。我还需要能够具有不同类型的参数(端口号,文件夹,静态字符串等)。反序列化继承类
所以我设计了一个基类,参数为这样的:
public abstract class Parameter
{
public abstract bool isValid();
}
比方说,我们有两种类型的文件夹参数:
public abstract class Folder : Parameter
{
public string folderName { get; set; }
protected Folder(string folderName)
{
this.folderName = folderName;
}
}
public class ReadWriteFolder : Folder
{
public ReadWriteFolder(string folderName) : base(folderName)
{
}
public override bool isValid()
{
return isReadable() && isWritable();
}
}
public class ReadFolder : Folder
{
public ReadFolder(string folderName) : base(folderName)
{
}
public override bool isValid()
{
return isReadable();
}
}
这是从的WebAPI使用,所以这是我的控制器:
public Dictionary<String, Parameter> Get()
{
Dictionary<String, Parameter> dictionary = new Dictionary<String, Parameter>();
dictionary.Add("TemporaryFiles", new ReadWriteFolder("C:\\temp\\"));
dictionary.Add("AnotherTemporaryFiles", new ReadWriteFolder("D:\\temp\\"));
return dictionary;
}
这会产生以下JSON序列号: {"TemporaryFiles":{"folderName":"C:\\temp\\"},"AnotherTemporaryFiles":{"folderName":"D:\\temp\\"}}
这似乎是合理的。
我的问题是这样的:我该如何反序列化回到原始类型?或者将序列化改为更容易反序列化的东西?
这就是线索!我实际上并不知道我使用了JSON.net(我刚刚使用了WebAPI模板提供的那个)。只要我设置TypeNameHandling参数,一切都按我的意图工作。谢谢! – Zyberzero