【发布时间】:2018-06-18 16:27:50
【问题描述】:
我正在尝试使用扩展方法在没有它的类中实现ToString()。如果我将方法声明更改为ToString2(),它可以正常工作,但是当我尝试使用.ToString 时它会失败。为什么ToString2() 有效,而ToString() 无效?
错误:
System.NullReferenceException:对象引用未设置为对象的实例。
这是我的方法实现:
namespace LeankitExtensions
{
public static class CardViewExt
{
public static string ToString(this CardView c)
{
if (c == null)
return "null card";
return String.Format("-------\nexternal id: {0} \ntitle: {1}\n-------",c.ExternalCardID,c.Title);
}
}
}
调用方法:
CardView cv = new CardView(){ExternalCardID="22";Title="Hi"};
Console.WriteLine(cv.ToString());
【问题讨论】:
-
因为 ToString() 是 Object 类的方法,如果要使用方法名 ToString() 需要重写基类的版本。
-
德拉特错过了。请提出作为答案
-
作为答案添加。
标签: c# namespaces extension-methods