C# 具有可以是任何值类型的属性的模型
我有一个获取FilterState模型的控制器方法。C# 具有可以是任何值类型的属性的模型,c#,.net,angular,api,generics,C#,.net,Angular,Api,Generics,我有一个获取FilterState模型的控制器方法。 该模型包含一个过滤器模型列表,其中包含Value属性,可以是任何值类型(int、string、datetime等)。 如何编写这个类并确定从前端传入的属性类型 [HttpGet] public async Task<GridResultViewModel<ItemGridViewModel>> GetFiltered(int modelId, [FromQuery] FilterState filterState
该模型包含一个过滤器模型列表,其中包含Value属性,可以是任何值类型(int、string、datetime等)。
如何编写这个类并确定从前端传入的属性类型
[HttpGet]
public async Task<GridResultViewModel<ItemGridViewModel>> GetFiltered(int modelId,
[FromQuery] FilterState filterState)
{
...
}
public class FilterState
{
public int Skip { get; set; }
public int Take { get; set; }
public IEnumerable<Filter> Filters { get; set; }
}
public class Filter
{
public string Operator { get; set; }
public string Field { get; set; }
public ??? Value { get; set; } // this can be string, int, datetime etc.
}
[HttpGet]
公共异步任务GetFiltered(int modelId,
[FromQuery]过滤器状态(过滤器状态)
{
...
}
公共类过滤器状态
{
公共整数跳过{get;set;}
公共整数Take{get;set;}
公共IEnumerable筛选器{get;set;}
}
公共类过滤器
{
公共字符串运算符{get;set;}
公共字符串字段{get;set;}
公共???值{get;set;}//可以是字符串、int、datetime等。
}
如果我将Value属性设置为object或dynamic类型,则始终为null。我在前端使用Angular 11。我认为这里唯一的选择是将type设置为
string
,然后,可能基于另一个属性,尝试解析为特定类型
public string Value { get; set; } = "str12";
object CheckType(string value)
{
return
int.TryParse(value, out int intVal) ? intVal :
DateTime.TryParse(value, out DateTime datetimeVal) ? datetimeVal :
value;
}
var result = CheckType(Value);
if (result is int)
{
}
if (result is string)
{
}