如何将这两种方法结合起来?

朱利安·科克

我对泛型很陌生,我有一个问题,两种方法本质上是一样的。唯一的区别是参数。

我有一个 json 列表,有很多 JSON 对象,我有两种方法以两种不同的方式获取不同的对象。该对象是一个由 ID 和代码组成的语言对象。

我试过深入研究泛型,因为我认为这是我解决这个问题以使代码更好的方法。但是,我真的很难理解它。

这些方法看起来像这样。

public LanguageDto GetLanguageById(int id)
{
    var o = JObject.Parse(json);
    var a = (JArray) o["list"];
    var _list = a.ToObject<IList<LanguageDto>>();

    return _list.FirstOrDefault(x => x.Id == id);
}

public LanguageDto GetLanguageByCode(string code)
{
    var o = JObject.Parse(json);
    var a = (JArray) o["list"];
    var _list = a.ToObject<IList<LanguageDto>>();

    return _list.FirstOrDefault(x => x.LanguageCode == code);
}

我想要的是一个看起来像这样的组合方法

public LanguageDto GetLanguage(T)
{
    var o = JObject.Parse(json);
    var a = (JArray) o["list"];
    var _list = a.ToObject<IList<LanguageDto>>();

    return _list.FirstOrDefault(x => x.T == T);
}

我希望你能得到我的伪代码。

如果有人有一些关于泛型的很好的学习资源或涉及这个问题的东西,如果你愿意分享,我将不胜感激。

克里斯·汉农

看起来您实际上只是想要一种方法来更改所使用的比较。我建议只传递一个委托进行比较。

public LanguageDto GetLanguage(Func<LanguageDto, bool> isMatch)
{
    var o = JObject.Parse(json);
    var a = (JArray) o["list"];
    var _list = a.ToObject<IList<LanguageDto>>();

    return _list.FirstOrDefault(isMatch);
}

那时,您可以以任何您选择的方式定义该比较。

LanguageDto GetLanguageById(int id) => GetLanguage(x => x.Id == id);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有什么办法可以将这两种方法结合起来吗?

来自分类Dev

如何将这两种路线结合起来?

来自分类Dev

如何将锈蚀的寿命结合起来?

来自分类Dev

如何将 ramda 与重构结合起来?

来自分类Dev

如何将这两个 Less @Media 查询与“或”条件结合起来?

来自分类Dev

将State monad与两种风格的错误传播结合起来

来自分类Dev

如何将两个字符串与随机位置结合起来

来自分类Dev

如何将play框架和angular2结合起来?

来自分类Dev

如何将2种方式的数据绑定与模型驱动的表单结合起来?

来自分类Dev

Haskell:如何将标量值和单子值结合起来?

来自分类Dev

在Redshift中,如何将CTAS与“如果不存在”子句结合起来?

来自分类Dev

如何将Azure测试计划与管道结合起来?

来自分类Dev

如何将词汇表和语法结合起来?

来自分类Dev

Rust:如何将Entry API与拥有的数据结合起来?

来自分类Dev

如何将获胜者和工作组结合起来?

来自分类Dev

如何将导航栏和分页结合起来?

来自分类Dev

T-SQL:如何将多行代码与 if 语句结合起来

来自分类Dev

如何将 3 个选择器与 a:hover 标签结合起来?

来自分类Dev

如何将数据帧与熊猫中的冗余行结合起来

来自分类Dev

如何将 Join 与聚合函数和分组依据结合起来

来自分类Dev

如何将 var 与 var + repeat 结合起来?

来自分类Dev

如何将 NSLayout 约束与 CGrect 框架(Swift4)结合起来

来自分类Dev

如何将数据切换与数据工具提示结合起来?

来自分类Dev

如何将延迟函数调用的顺序和并行执行结合起来?

来自分类Dev

rust-如何将这个宏与循环/递归结合起来?

来自分类Dev

如何将代码隐藏和 javascript 函数结合起来?

来自分类Dev

如何在Java中两个类似的方法结合起来?

来自分类Dev

如何将Angular2与jinja2模板和烧瓶结合起来

来自分类Dev

如何将Cognito用户池与外部供应商(如Facebook)结合起来?

Related 相关文章

  1. 1

    有什么办法可以将这两种方法结合起来吗?

  2. 2

    如何将这两种路线结合起来?

  3. 3

    如何将锈蚀的寿命结合起来?

  4. 4

    如何将 ramda 与重构结合起来?

  5. 5

    如何将这两个 Less @Media 查询与“或”条件结合起来?

  6. 6

    将State monad与两种风格的错误传播结合起来

  7. 7

    如何将两个字符串与随机位置结合起来

  8. 8

    如何将play框架和angular2结合起来?

  9. 9

    如何将2种方式的数据绑定与模型驱动的表单结合起来?

  10. 10

    Haskell:如何将标量值和单子值结合起来?

  11. 11

    在Redshift中,如何将CTAS与“如果不存在”子句结合起来?

  12. 12

    如何将Azure测试计划与管道结合起来?

  13. 13

    如何将词汇表和语法结合起来?

  14. 14

    Rust:如何将Entry API与拥有的数据结合起来?

  15. 15

    如何将获胜者和工作组结合起来?

  16. 16

    如何将导航栏和分页结合起来?

  17. 17

    T-SQL:如何将多行代码与 if 语句结合起来

  18. 18

    如何将 3 个选择器与 a:hover 标签结合起来?

  19. 19

    如何将数据帧与熊猫中的冗余行结合起来

  20. 20

    如何将 Join 与聚合函数和分组依据结合起来

  21. 21

    如何将 var 与 var + repeat 结合起来?

  22. 22

    如何将 NSLayout 约束与 CGrect 框架(Swift4)结合起来

  23. 23

    如何将数据切换与数据工具提示结合起来?

  24. 24

    如何将延迟函数调用的顺序和并行执行结合起来?

  25. 25

    rust-如何将这个宏与循环/递归结合起来?

  26. 26

    如何将代码隐藏和 javascript 函数结合起来?

  27. 27

    如何在Java中两个类似的方法结合起来?

  28. 28

    如何将Angular2与jinja2模板和烧瓶结合起来

  29. 29

    如何将Cognito用户池与外部供应商(如Facebook)结合起来?

热门标签

归档