在类中调用重载扩展方法

本文关键字:扩展 方法 重载 调用 | 更新日期: 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)