ASP.NET Core API的JSON结果中未包含的继承的类和属性

问题描述 投票:0回答:1

我有一个简单的模型,尝试将其序列化为JSON,但是某些属性未包含在结果中。当我的对象从基类继承时,基类的属性不会出现在json中。

在JSON字符串中,“ searchModel”为{}

SearchModelBase.cs

public interface ISearchModelBase
{
    SearchTypes Type { get; set; }
    string SearchString { get; set; }
}

public abstract class SearchModelBase : ISearchModelBase
{
    public SearchModelBase(SearchTypes type, string searchString)
    {
        this.Type = type;
        this.SearchString = searchString;
    }

    public SearchTypes Type { get; set; }

    public string SearchString { get; set; }
}

public enum SearchTypes
{
    User,
    Site
}

AssetsDefaultSearchModel.cs

public interface IAssetsDefaultSearchModel : ISearchModelBase
{

}

public class AssetsDefaultSearchModel : SearchModelBase, IAssetsDefaultSearchModel
{
    public AssetsDefaultSearchModel(SearchTypes type, string searchString) : base(type, searchString) 
    {

    }
}

JSON

{
    "items": [
        {
            "displayName": "FFU Samarin",
            "data": {
                "appId": 3,
                "displayName": "FFU Samarin",

                ..........

在Visual Studio中,集合中的每个项目都包含AssetsDefaultSearchModel,两个属性中都具有值:enter image description here

c# json asp.net-core asp.net-apicontroller
1个回答
0
投票

在从ISearchResultBase派生的接口中,我必须使用new关键字定义一个新属性。然后,我返回一个从IAssetsDefaultSearchResult派生的对象(不复制类中的属性),并且它按预期方式工作。

public interface IAssetsDefaultSearchResult : ISearchResultBase
{
    new ISearchModelBase SearchModel { get; }

    string DisplayName { get; }

    object Data { get; }

    TagBuilder HtmlTag { get; }
}
© www.soinside.com 2019 - 2024. All rights reserved.