我可以从SoapUI在TSTS环境中调用EnhancedSeatMapRQ.当我使用Visual Studio 2015生成的Soap代理进行相同的调用时,我得到null反序列化的Items部分.我还在ApplicationResults部分获得"已完成"(成功).我可以看到Fiddler这个调用实际上是成功的,而这个问题是由.Net反序列化造成的.
我有一个 Cabin 类,其中包含 Row 对象的列表。我想像这样序列化对象,但是在反序列化时,我希望 Row 对象成为 RowRule 对象,它继承自 Row 对象。下面是我一直在尝试的一些示例代码。
class Program
{
static void Main(string[] args)
{
var cabin = new Cabin();
var row = new Row();
row.Status = "Success";
cabin.Rows = new List<Row>()
{
row,
row
};
JsonSerializerSettings settings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Auto
};
string json = JsonConvert.SerializeObject(cabin, Formatting.Indented, settings);
Console.WriteLine(json);
Cabin obj = JsonConvert.DeserializeObject<Cabin>(json,
new JsonSerializerSettings() {TypeNameHandling = TypeNameHandling.Auto});
Console.WriteLine(obj);
Debug.Assert(obj.Rows.First().GetType().Name == "RowRule");
}
}
class Cabin
{
public IList<Row> Rows { get; …Run Code Online (Sandbox Code Playgroud)