我有一个API,用于接收自定义类的对象
[HttpPost("[action]")]
public ResultSet AddApplication([FromBody] Application model)
{
// Code Here
}
应用程序是一个自定义类,大约有64个属性。
现在,我想以
的形式接收它而不是Application对象 public ResultSet AddApplication([FromBody] object model)
在继续下一步之前,我要检查是否有64键 是否为“对象模型”
我可以在类上进行反思
Type T = typeof(LoanApplication);
PropertyInfo[] P = T.GetProperties();
但是如何检查对象类型中的键?
我想要类似
[HttpPost("[action]")]
public ResultSet AddApplication([FromBody] object model)
{
Type T = typeof(model);
PropertyInfo[] P = T.GetProperties();
}
但是这里typeof(model)给出了错误,因为它是一个变量,不能像Type一样使用它。
如果源发送了错误的数据(较少的属性或属性名称不匹配),而我却需要通过比较“我的自定义类型”的属性和接收到的对象的属性来找出问题所在,我就需要这样做
那么有什么方法可以从列表中的对象模型中获取键(有或没有反射)?
更新1:
[HttpPost("[action]")]
public ResultSet AddApplication([FromBody] Application model)
{
// Code Here
}
如果API接收的模型比上面的代码模型错误(在调试中),则该模型将为null,这意味着我们永远不会知道出了什么问题,哪个属性不匹配或在接收的对象中不存在
但是
[HttpPost("[action]")]
public ResultSet AddApplication([FromBody] object model)
{
}
如果模型错误,那么它将仍然作为对象接收,并且通过获取其属性的数组或列表,我可以将其与自定义类型进行比较
这使我能够获取所有出错信息,我希望将响应发送回去,以便该API的用户可以知道自己犯了什么错误
Ex:-
答案 0 :(得分:1)
因此,正如我在评论中提到的那样,更改您的好路径以解决不良数据是一个非常糟糕的选择。您的良好路径应该可以正常工作。如果您想捕获无效数据的请求,请使用ActionFilter:
MathNet.Numerics.LinearAlgebra