C# 这两种Post方法的区别是什么

C# 这两种Post方法的区别是什么,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我对这两行之间的区别有点困惑: req.OpenReadStream(); 及 这是我到目前为止所知道的,如果我错了,请纠正我,我知道它们都是用来读取文件的,第一个方法只接受文件,而第二个方法接受文件和json值,, 但我仍然不明白语法上的区别 以下是post方法的一个片段: public IActionResult Post(IFormFile req) { req.OpenReadStream(); return Ok(); } 没有。他们都属于我 唯一的区别是如何访问

我对这两行之间的区别有点困惑:

req.OpenReadStream();

这是我到目前为止所知道的,如果我错了,请纠正我,我知道它们都是用来读取文件的,第一个方法只接受文件,而第二个方法接受文件和json值,, 但我仍然不明白语法上的区别

以下是post方法的一个片段:

public IActionResult Post(IFormFile req)
{
    req.OpenReadStream();
    return Ok();
}

没有。他们都属于我

唯一的区别是如何访问接口

在第一个示例中,当它被传递到方法的构造函数中时,您将直接访问它

在第二个示例中,通过使用返回所述接口的方法获取文件,从的集合访问它


正如Panagiotis Kanavos所说,后者根本无法测试。

谢谢你,如果我可以问一下,哪一个在性能或最佳实践方面更好?取决于你正在做的事情-性能方式-直接访问对象明显比在
集合上执行
GetFile
更快。但这并不总是可能的,这取决于像你这样的场景。我不会太担心这个开销,因为我说过它是最小的。@Gru第二个根本无法测试。这不仅仅关乎性能。@Gru方法不同。第一个仅将文件发布到
Post
操作。第二个尝试通过
RequestModel
对象将更多数据与文件一起发布。@PanagiotisKanavos我想我们在这里讨论的是两件不同的事情。OP没有询问他在控制器上的方法,而是询问他访问
OpenReadStream()
方法的不同。你所说的是真的,但是你在第二次评论中所说的——OP已经知道了,根据他在问题中的陈述。
public IActionResult Post(IFormFile req)
{
    req.OpenReadStream();
    return Ok();
}
[HttpPost]
public IActionResult Post([FromForm] RequestModel req)
{
    Request.Form.Files.GetFile("FileContent").OpenReadStream()
    return Ok();
}

//....
public class RequestModel
{
    public string FileContent { get; set; }
    public string SomeRandomString { get; set; }    
}