请考虑以下代码:
class Program
{
static void Main(string[] args)
{
var t = new Test();
t.ToString();
Console.WriteLine(t.ToString());
Console.ReadKey();
}
}
public class Test
{
}
public static class TestHelper
{
public static string ToString(this Test test)
{
return "HashValue of test instance: " + test.GetHashCode();
}
}
如何调用我的重载(至少VS告诉我ToString()
有+1 overload
)扩展方法?由于Test
从object
继承(沿.NET Framework afaik中的所有类)。类object
的实现ToString()
会返回<namespace-wher-the-class-is-locatet.<class-name>
之类的内容。
但是,如果我想ToString()
我自己的实现不需要其他参数呢?
不,我不想在课堂上实施ToString()
。我想把它作为一种扩展方法。 (类似于SecureString的扩展,将其从非托管,加密转换为托管,解密)
提前致谢!
答案 0 :(得分:3)
您应该直接调用它,并且无法更改它,因为方法解析选择实例成员而不是扩展方法。
TestHelper.ToString(t)