我有一个通用方法,我想对其施加约束。
public T MyMethod<T>(object obj) where T : ???
约束是所有简单类型 int、bool 等,但我还需要允许字符串。我有办法限制这个群体吗?
我有一个通用方法,我想对其施加约束。
public T MyMethod<T>(object obj) where T : ???
约束是所有简单类型 int、bool 等,但我还需要允许字符串。我有办法限制这个群体吗?
没有什么与您想要的完全匹配,但IConvertible
可能会这样做 - 它包含将值转换为所有“核心”类型的方法,包括string
, 并且由您提到的所有核心类型实现。
BCL 文档建议您不要直接使用此类型,而是根据需要使用Convert.ChangeType
或其中一种Convert.ToXXX
方法。
我相信结构会给你所有你正在寻找的无字符串类型。它也将允许任何已定义的内容,这是任何解决方案都会遇到的问题。
老实说,虽然这看起来可能是过度工程。您应该再次考虑您的要求,看看这是否真的需要。