c# - 在类中调用重载扩展方法

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

考虑以下代码:

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 Framework 中的所有类)object 。类(class)object实现为ToString()返回类似 <namespace-wher-the-class-is-locatet.<class-name> 的内容。 但如果我想ToString()怎么办?我自己的实现不带其他参数?

不,我不想实现 ToString()在我的类(class)里面。我想将其作为扩展方法。 (就像 SecureString 的扩展一样,将其从非托管、加密转换回托管、解密)

提前致谢!

最佳答案

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

TestHelper.ToString(t)

关于c# - 在类中调用重载扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134055/

相关文章:

c# - 在 SQL Server 中集成 c# 类库

c# - 在 C# 中针对没有 Skip 的 DocumentDB 进行分页

.net - System.Collections.Concurrent 集合的扩展方法是线程安全的吗?

python - 菱形继承(钻石问题)和 MRO

c# - 使用 XML 的 WCF 请求验证

c# - 在迭代列表时从列表中删除/添加项目

c# - 我可以扩展一个泛型类来限制可以使用的类型吗?

python - "mro()"有什么作用?

Python方法解析顺序

c# - 使用初始化语法初始化事件