我有一个简单的模型,尝试将其序列化为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,两个属性中都具有值:
在从ISearchResultBase派生的接口中,我必须使用new关键字定义一个新属性。然后,我返回一个从IAssetsDefaultSearchResult派生的对象(不复制类中的属性),并且它按预期方式工作。
public interface IAssetsDefaultSearchResult : ISearchResultBase
{
new ISearchModelBase SearchModel { get; }
string DisplayName { get; }
object Data { get; }
TagBuilder HtmlTag { get; }
}