【问题标题】:Please explain this convert extension method请解释这个转换扩展方法
【发布时间】:2019-11-27 04:09:33
【问题描述】:

我正在尝试理解下面的代码,有人可以向我解释一下(简单地说)转换的方式和内容。特别是这部分让我感到困惑(这个 IEnumerable> 值)

代码:

public static class ConvertExtensions
{
  public static IEnumerable<TTarget> ConvertAll<TSource, TTarget>(this IEnumerable<IConvertModel<TSource, TTarget>> values) => values.Select(value => value.Convert);
}

【问题讨论】:

  • (this IEnumerable&lt;IConvertModel&lt;TSource, TTarget&gt;&gt; values) 与“如何转换以及转换什么”无关,它只是说这是IEnumerable&lt;IConvertModel&lt;TSource, TTarget&gt;&gt; 上的扩展方法。
  • IConvertModel 看起来如何?
  • { 公共接口 IConvertModel { TTarget Convert { get; } } }
  • 您的IConvertModel 似乎没有转换任何价值。它只是提供TTarget 的值。
  • 该方法只需要一个可枚举的某人的接口,它有一个源和一个目标泛型参数和一个转换属性,真的没有什么要解释的了

标签: c# .net generics extension-methods ienumerable


【解决方案1】:

基本上,对于集合中的每个值,调用T.Convert 函数(其中 T 是目标类型)并返回另一个转换值的集合。

它不做任何转换,它会根据输出类型将转换交给不同的函数。

这是执行以下操作的一种简写方式:

var convertedValues = new List<TTarget>();
foreach(var value in values)
{
   var convertedValue = value.Convert();
   convertedValues.Add(convertedValue);
}
return convertedValues;

【讨论】:

  • 谢谢,这对我来说更有意义。
猜你喜欢
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多