考虑以下代码:
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/