C# 如何将json数据传递给抽象类? 公共抽象类AbstractSearch { 公共字符串属性{get;set;} 公共字符串TargetTypeName{get;set;} } 公共类日期搜索:AbstractSearch { 公共日期时间?搜索项{get;set;} 公共日期比较器比较器{get;set;} } 公共枚举日期比较器 { 较少的 出租人平等, 平等, 更加平等, 更大的, 范围内 } 公共类SearchViewModel { 公共IEnumerable搜索条件{get;set;} }

C# 如何将json数据传递给抽象类? 公共抽象类AbstractSearch { 公共字符串属性{get;set;} 公共字符串TargetTypeName{get;set;} } 公共类日期搜索:AbstractSearch { 公共日期时间?搜索项{get;set;} 公共日期比较器比较器{get;set;} } 公共枚举日期比较器 { 较少的 出租人平等, 平等, 更加平等, 更大的, 范围内 } 公共类SearchViewModel { 公共IEnumerable搜索条件{get;set;} },c#,json,C#,Json,如何从客户端JSON将上述属性传递给SearchViewModel类 我需要通过Json将属性、TargetTypeName、SearchTerm、Comparator从javascript传递到webapi Iam使用Web api 2.0作为服务器端。是否可以将Json参数传递到继承的类中?如果在客户端序列化时指定具体类型,则可以使用。您可以使用JSON中的$type属性指定类型 模型绑定器将无法实例化抽象类 配置JSON.NET: public abstract class Abstrac

如何从客户端JSON将上述属性传递给SearchViewModel类

我需要通过Json将属性、TargetTypeName、SearchTerm、Comparator从javascript传递到webapi


Iam使用Web api 2.0作为服务器端。是否可以将Json参数传递到继承的类中?

如果在客户端序列化时指定具体类型,则可以使用。您可以使用JSON中的
$type
属性指定类型

模型绑定器将无法实例化抽象类

配置JSON.NET:

public abstract class AbstractSearch
{
    public string Property { get; set; }
    public string TargetTypeName { get; set; }
}

public class DateSearch : AbstractSearch
{
    public DateTime? SearchTerm { get; set; }
    public DateComparators Comparator { get; set; }
}

public enum DateComparators
{
    Less,
    LessOrEqual,
    Equal,
    GreaterOrEqual,
    Greater,
    InRange
}

public class SearchViewModel
{
    public IEnumerable<AbstractSearch> SearchCriteria { get; set; }
}
然后以以下格式发布JSON:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;

为什么不
public IEnumerable SearchCriteria{get;set;}
?没有SearchViewModel类是否可能?@tym32167我假设OP有其他从抽象继承的类,因此,需要参考抽象而不是具体的实现。您能用上面的示例给出一个示例代码吗?请注意所涉及的安全风险()
{
    "$type": "Namespace.DateSearch, AssemblyName"
    "Property": "..."
    "etc": ""
}