2015-12-17 73 views
11

我可以在以前版本的MVC中使用「TypeNameHandling = TypeNameHandling.Auto」。 在MVC6,我有以下類如何在ASP.NET mvc 6中指定多態類型

public class BaseClass { 
    public string Id {get;set;} 
} 
public class Foo : BaseClass { 
    public string Name {get;set;} 
    public string Address {get;set;} 
} 
public class Bar : BaseClass { 
    public string Account {get;set;} 
    public string Password {get;set;} 
} 

在我的WebAPI,JSON結果將是以下

[ 
    {Id: "1", Name: "peter", Address: "address1"}, 
    {Id: "2", Account: "mary", Password: "1234"} 
] 

但我希望以下結果:

[ 
    {$type: "Foo", Id: "1", Name: "peter", Address: "address1"}, 
    {$type: "Bar", Id: "2", Account: "mary", Password: "1234"} 
] 
+0

看起來目前有一個錯誤。在這裏提交一個:https://github.com/aspnet/Mvc/issues/3782 –

+0

你可以發佈你的api代碼嗎 –

回答

1

您可以添加新字段:在BaseClass中輸入並在構造函數初始化它:

public class BaseClass { 
    public string Id {get;set;} 

    public readonly string type; 
    public BaseClass() 
    { 
     type = this.GetType().Name; 
    } 
} 

在Foo類實例中,它將是「Foo」,在Bar - 「Bar」中。

相關問題