覆盖系统方法

时间:2011-03-08 19:35:45

标签: c# .net

我想修改系统方法以在其中添加条件。

方法是

System.Boolean.Parse(String value)

我希望它支持其他值,例如“1.000”和“0.000”。

由于某种原因,DataGridViewCheckBoxCell抛出了关于“0.000不是布尔值的有效值”的异常。这是从DataGridView的内部代码中调用的...所以我无法修改调用:/

由于我的TrueValue为“true”且我的FalseValue为“false”,因此我没有将这些值放在任何地方。

这就是我想要覆盖这个方法的原因!

这样做有什么好办法吗?

2 个答案:

答案 0 :(得分:3)

您无法覆盖此方法,因为它已声明为static

围绕它编写一个包装器(或Boolean上的扩展方法),它将实现您的检查以及是否将委托传递给它。

答案 1 :(得分:0)

您想要修改Boolean类的方法,以便将字符串传递给它吗?如果要解析字符串,还有很多其他方法可以解析它。例如,您可以像这样处理1.000

using System.Float;

string foo = "1.000";
float result = Float.parse( foo ); 
value = ( result == 1.0f );

如果您编写自己的扩展方法,那可能是最好的。如果您使用“1.000”作为表示true的值,并且这是您需要它的唯一方法,那么您应该使用像return ( arg == "1.000" )这样的简单方法,或者首先使用布尔值。如果您有多个字符串可以处理的值,那么您将拥有不同的逻辑。如果您发布一些代码和要求,我们可能会帮助您更多。 :d