在类中调用重载扩展方法
本文关键字:扩展 方法 重载 调用 | 更新日期: 2023-09-27 18:14:02
考虑以下代码:
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
继承(沿着所有类在。net框架afaik)从object
。类object
有一个ToString()
的实现,它返回类似<namespace-wher-the-class-is-locatet.<class-name>
的东西。但是,如果我想要ToString()
我自己的实现,而不接受其他参数,该怎么办?
和NO,我不想在我的类内实现ToString()
。我想把它作为一个扩展方法。(就像SecureString的扩展,将其从非托管,加密转换回托管,解密)
提前感谢!
你应该直接调用它,你不能改变它,因为方法解析选择实例成员而不是扩展方法。
TestHelper.ToString(t)