用于将JSON数组映射到C#/ASP.Net核心中的DTO的最佳数据类型
这可能是一个愚蠢的问题,但我想知道以下几点: 我有一个.NET5WebAPI,我想在其中创建一个DTO来接受来自前端的POST请求。 POST请求中的正文包含以下JSON:用于将JSON数组映射到C#/ASP.Net核心中的DTO的最佳数据类型,c#,asp.net-core,.net-core,model,dto,C#,Asp.net Core,.net Core,Model,Dto,这可能是一个愚蠢的问题,但我想知道以下几点: 我有一个.NET5WebAPI,我想在其中创建一个DTO来接受来自前端的POST请求。 POST请求中的正文包含以下JSON: { "aComment": "This is a text field", "aNumber": 5, "anArray": [1, 2, 3, 4, 5] } 在控制器中,我有一个action方法,它将接收此请求并将其
{
"aComment": "This is a text field",
"aNumber": 5,
"anArray": [1, 2, 3, 4, 5]
}
在控制器中,我有一个action方法,它将接收此请求并将其映射到DTO(“SomeDto”):
[HttpPost]
公共异步任务Post()
{
//一些代码
}
对于该JSON整数数组,DTO中使用的最佳数据类型是什么
* int[]
* ICollection<int>
* IEnumerable<int>
* List<int>
*int[]
*I收集
*数不清
*名单
我倾向于使用ICollection或IEnumerable,因为它们比列表轻。但是我想int[]也可以很好地工作
编辑:
我看到.NETCore在构建现有数据库时,创建ICollection类型的集合,并在类构造函数中初始化它们。例如:
public class SomeModel
{
public SomeModel()
{
Accounts = new HashSet<Account>();
}
public int? Id { get; set; }
public virtual ICollection<Account> Accounts { get; set; }
}
公共类模型
{
公共模型()
{
Accounts=newhashset();
}
公共int?Id{get;set;}
公共虚拟ICollection帐户{get;set;}
}
那么也许我也应该使用ICollection?尽管在上面的脚手架示例中,集合的类型为“Account”(即对象)。不确定这是否也适用于Integer等基本类型的简单集合?在此处使用
dynamic
public async Task Post()谢谢Sami。不确定我是否正确理解了您的意思,但是JSON数组(“anArray”)可以有不同数量的元素,但是这些元素总是基本类型integer。您的建议是使用int[],对吗?只使用适合的数据类型-没有“最佳”数据类型。如果您的收藏从未更改-请使用数组,如果收藏不时更改,但不保留顺序-请使用
ICollection
,如果它是有序收集-使用IList
。我宁愿不使用IEnumerable
,因为我引用的是可能无法具体化的数据。问题是如何设计SomeDto
,而不是如何将其从控制器中抛出
public class SomeModel
{
public SomeModel()
{
Accounts = new HashSet<Account>();
}
public int? Id { get; set; }
public virtual ICollection<Account> Accounts { get; set; }
}