2013-06-27 39 views
2

object.ToString()方法用于将任何对象转换为可读文本的字符串。但是如果该对象为空,则会抛出一个NullReferenceError。所以我想用一个扩展方法重写此ToString()方法,如:如何用扩展方法重写Object.ToString()方法?

public static class StringExt 
{ 
    public string ToString(this object str) 
    {   
     if (str == null) 
      return System.Convert.ToString(str); 

     return str.ToString(); 
    } 
} 

但好像这永远不会覆盖Object类的ToString()

Myclass cls; 
//doing something on the other hand. 

cls.ToString(); 

这里cls.ToString()总是使用Object.ToString()方法。有没有办法做到这一点?

+0

问题不是你总是试图解引用一个空对象,因此会一直抛出一个异常? 它看起来像你试图解决无法解决... – l33tmike

回答

16

扩展方法故意不能取代实例方法。

您需要使用不同的名称。

+0

我不喜欢不同的名称,因为这可以很容易错过。还有其他方式来覆盖任何类型的对象的实现。 – JSJ

+1

@Jodha:你可以重写IL。 – SLaks