【问题标题】:static From and To methods vs implicit and explicit Casting methods静态 From 和 To 方法与隐式和显式 Casting 方法
【发布时间】:2015-02-04 01:48:24
【问题描述】:

我已经阅读了here 如何实现类型转换,并且我知道如何实现ToTypeFromType 方法。我需要知道为什么许多开发人员在可以轻松构建指定转换的情况下选择构建FromTypeToType 方法? 是否有性能优势,或者仅仅是开发人员为了可读性/理解而选择的东西?

我有一个案例,其中 ViewModel 和 Model 非常相关,但我必须从一个转换到另一个。当我查看很多库时,很明显人们不会强制转换或编写转换方法,而是使用静态 From 和 To 方法,例如在 solazrizr 中。我只是分裂,不知道我是否可以写ViewModel vm = new Model();(隐式转换)、ViewModel vm = (ViewModel)(new Model());(显式转换)或ViewMode vm = ViewModel.FromModel(new Model());(静态从到方法)。

为什么首选 From/To 方法有什么具体原因吗?

【问题讨论】:

  • ViewModel.FromModel 听起来像是工厂方法,而不是转换。
  • 你有没有试过在比较大的项目中寻找隐式转换的代码?使用“ToType”这很简单,因为它就在您的面前 - 您知道它的使用位置,您可以轻松地“找到所有参考”并喜欢...通过查看可能的代码来尝试相同的操作有隐式转换...
  • @PrestonGuillot 很抱歉我不熟悉命名约定,我是个小孩

标签: c# mvvm casting type-conversion static-methods


【解决方案1】:

我选择方法的原因列表:

  • 方法匹配规则比隐式/显式转换更容易理解。即使对于基本的数字类型,这样的规则有时也不直观——比如1/2 < 1/10f,两种基本不相关的类型的转换会导致更多的混乱。
  • 不可能“自动发现”转化 - 虽然智能会很容易地建议方法(包括扩展),但转化并非如此
  • 阅读具有隐式转换的代码更加困难,因为阅读器通常没有上下文,可以进行哪些转换。

对于公共 API,搜索优化的其他原因适用 - 搜索方法名称比“从 ZZZ 隐式转换为 YYY”之类的内容要容易得多。

【讨论】:

  • 具体情况如何——从 ViewModel 到 Model,反之亦然?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2012-08-04
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2012-04-03
相关资源
最近更新 更多