首页 / 知识
关于c#:通用类型检查
2023-04-12 01:58:00

Generic type checking有没有一种方法可以强制/限制传递给基元的类型? (布尔,整数,字符串等) 现在,我知道您可以通过where子句将泛型类型参数限制为类型或接口实现。但是,这并不适合基元(AFAIK),因为它们并不具有共同点(除了对象之前有人说过!:P)。 因此,我目前的想法是咬紧牙关,做一个大的switch语句,并在失败时抛出ArgumentException。 编辑1: 只是澄清一下: 代码定义应类似于:
和实例化:
编辑2 @Jon Limjap-好点了,我已经考虑过了。.我确定有一个通用方法可以用来确定类型是值类型还是引用类型。 这在立即删除许多我不想处理的对象时可能很有用(但随后您需要担心所使用的结构,例如Size)。有趣的问题不是吗? :) 这里是:
取自MSDN。 我很好奇..这可以在.NET 3.x中使用扩展方法来完成吗?创建一个接口,并在扩展方法中实现该接口(这可能比使用胖开关更干净)。另外,如果您随后需要扩展到任何轻量级定制类型,则它们也可以实现相同的接口,而无需更改基本代码。 你们有什么感想? 不幸的消息是我正在Framework 2中工作!! :D 编辑3 这是Jon Limjaps Pointer撰写的非常简单的文章。非常简单,我几乎想哭了,但这很棒,因为代码就像一个魅力! 所以这就是我所做的(你会笑!): 将代码添加到泛型类
然后是一个小的实用程序方法来检查类型并引发异常,
接下来要做的就是在类构造函数中调用EnforcePrimitiveType()。任务完成! :-) 唯一的缺点是,它只会在运行时(显然)而不是设计时抛出异常。.但这没什么大不了的,可以通过FxCop之类的实用程序(我们在工作中不使用)来解决。 特别感谢乔恩·林贾普(Jon Limjap)!
这似乎很有效。
似乎在
也许有一种方法可以找出对象是否包含 更新它就在我的鼻子底下。那里的代码示例显示了这一点:
这仍然是一个丑陋的开关。但这是一个很好的起点! @Lars已经说了差不多的话:
所有工作在.NET 2、3和3.5中。 如果您可以忍受使用工厂方法(而不是您要求的构造函数MyClass),则可以始终执行以下操作:
这里的问题是您将需要键入
这使您可以进行静态检查,但要花费更多时间。 如果您对动态检查感到满意,则可以在上面的TypeCode解决方案上使用一些变体。
@Rob,
在遇到类似挑战时,我想知道你们对IConvertible接口的感觉如何。它允许请求者的要求,并且您可以扩展自己的实现。 例:
我正在考虑将其作为解决方案,尽管许多建议也是我选择的一部分。 但是,我担心的是-使用您的课程的潜在开发人员是否会产生误解? 干杯-谢谢。
您可以使用
使用自定义的FxCop规则来标记 |
最新内容
相关内容
python怎么调用类方法
python怎么调用类方法,培训,方法,实例,静态,定义,参数,属性,对象,关键字,以上,python中的类用来描述具有相同的属性和方法的对象的集合。它定python错误类型有哪些
python错误类型有哪些,异常,系统,培训,错误,代码,标准,检测,类型,程序,逻辑,python的错误有语法错误和逻辑错误语法错误程序执行过程中,pythonpython判断元素是否是字符串类型
python判断元素是否是字符串类型,培训,异常,类型,实例,字符串,数据类型,对象,元素,参数,序列,isinstance()是Python中的一个内建函数语法:isinpythonpython是什么类型的语言
pythonpython是什么类型的语言,培训,系统,教育,软件,电脑,代码,简介,人工智能,类型,语言,python是一种面向对象、解释型、动态类型计算机程序python判断字符串是否为小数的方法
python判断字符串是否为小数的方法,培训,代码,合法,小数点,小数,整数,字符串,方法,右边,左边,python想判断一个字符串是不是一个合法的小数,但python可以继承父类方法吗
python可以继承父类方法吗,培训,代码,名字,方法,动物,属性,编译器,这样的话,定义,里面,python继承,调用父类属性方法在python里面,继承一个类python字符串拼接有哪些方法?
python字符串拼接有哪些方法?,培训,一致,字符串,位置,异常,结果,方式,方法,字符,参数,python拼接字符串一般有以下几种方法:①直接通过(+)操作python创建多线程的两种方法
python创建多线程的两种方法,培训,第一,代码,业务,方法,线程,函数,任务,演示,实例,当我们使用python编程的过程中需要多个输出的任务的话,为了python有哪些大小写转换方法
python有哪些大小写转换方法,培训,字符串,方法,字符,字母,大写字母,大小写,长度,单词,大小,python中有哪些大小写转换方法1、lower()方法,大写python不同大小文件的复制方法
python不同大小文件的复制方法,培训,文件,内容,大小,方法,顺序,以上,教程,更多,python不同大小文件的复制方法1、小文件复制,打开一个已有文python列表的数据类型分析
python列表的数据类型分析,分析,设计,一致,培训,元素,数据类型,列表,索引,实例,逻辑,python列表的数据类型分析说明1、设计出一种循环的数据pythonshutil有哪些操作文件的方法
pythonshutil有哪些操作文件的方法,名称,分析,培训,文件,操作,方法,函数,路径,以上,目标,pythonshutil有哪些操作文件的方法1、使用函数shuti