【问题标题】:Call a overloading extension method in class [duplicate]在类中调用重载扩展方法[重复]
【发布时间】:2016-10-19 14:20:05
【问题描述】:

考虑以下代码:

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 的扩展,将其从非托管、加密转换回托管、解密)

提前致谢!

【问题讨论】:

  • 我看不出这有什么意义..有人能解释一下这有什么用吗?
  • 正如我所写:例如作为 System.Securety.SecureString 的扩展,将其转换回可读字符串?

标签: c# extension-methods method-resolution-order


【解决方案1】:

你应该直接调用它,你不能改变它,因为方法解析选择实例成员而不是扩展方法。

TestHelper.ToString(t)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多