【问题标题】:Where constraint for simple types and string简单类型和字符串的 where 约束
【发布时间】:2012-11-08 10:10:17
【问题描述】:

我有一个通用方法,我想对其施加约束。

public T MyMethod<T>(object obj) where T : ???

约束是所有简单类型 int、bool 等,但我还需要允许字符串。我有办法限制这个组吗?

【问题讨论】:

  • 为什么需要这个?坦率地说,这听起来像是一个奇怪的约束,因为这些类型没有共同点。
  • 不幸的是,没有。这不是完全你想要的,但你可能会通过限制IComparable来接近。
  • @KonradRudolph - 我正在使用通用扩展方法,使用 typedescriptor 类来转换对象,从而转换类型。

标签: c# .net generic-constraints


【解决方案1】:

没有什么与您想要的完全匹配,但IConvertible 可能会这样做 - 它包含将值转换为所有“核心”类型的方法,包括string,并且由您提到的所有核心类型实现。

BCL 文档建议您不要直接使用此类型,而是根据需要使用Convert.ChangeTypeConvert.ToXXX 方法之一。

【讨论】:

    【解决方案2】:

    我相信结构会给你所有你正​​在寻找的无字符串类型。它也将允许任何已定义的内容,这是任何解决方案都会遇到的问题。

    老实说,虽然这看起来可能是过度工程。您应该再次考虑您的要求,看看是否真的需要。

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 2018-06-10
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多