这个 ReSharper 代码片段“转换为方法组”是什么?实际上在做什么?
更改前的代码:
List<ProductBrandModel> model = brands.Select(item => Mapper.Map<ProductBrand, ProductBrandModel>(item)).ToList();
改进后的代码:
List<ProductBrandModel> model = brands.Select(Mapper.Map<ProductBrand, ProductBrandModel>).ToList();
这是在做什么?它是否隐式地在 brands
集合中的每个项目上运行该映射?
Code before the changes:
List<ProductBrandModel> model = brands.Select(item => Mapper.Map<ProductBrand, ProductBrandModel>(item)).ToList();
Code after the improvement:
List<ProductBrandModel> model = brands.Select(Mapper.Map<ProductBrand, ProductBrandModel>).ToList();
What is this doing? Is it implicitly running that mapping on every item in the brands
collection?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于您直接将 lambda 表达式的参数传递给
Mapper.Map
方法,因此它与直接指定此方法作为Select
的投影完全相同。Mapper.Map
的签名与Func
委托兼容,因此 R# 建议直接使用方法组而不是 lambda 表达式。Since you're directly passing the parameter of the lambda expression to the
Mapper.Map
method, it is exactly equivalent to specifying this method directly as the projection forSelect
. The signature ofMapper.Map
is compatible with theFunc<TSource, TResult>
delegate, so R# suggests to use the method group directly rather than a lambda expression.第一行创建一个立即调用 Mapper.Map 函数的方法。这是不必要的,因为 Mapper.Map 方法与 Select 的预期定义匹配,并且可以直接调用 Mapper.Map。 Resharper 对其进行了更改,以便仅调用 1 个方法,并且编译器不会生成额外的方法。
The first line creates a method that immediately calls the Mapper.Map function. This is unnecessary since the Mapper.Map method matches the expected definition of Select and can call Mapper.Map directly. Resharper changes it so that only 1 method is called and the extra method is not generated by the compiler.