在 class 中调用重载扩展方法
Call a overloading extension method in class
考虑以下代码:
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 中的所有 classes)。 class object
有一个 ToString()
的实现,returns 类似于 <namespace-wher-the-class-is-locatet.<class-name>
。
但是,如果我想 ToString()
我自己的不带其他参数的实现怎么办?
不,我不想在我的 class 中实现 ToString()
。我想把它作为一种扩展方法。 (类似于 SecureString 的扩展,将其从非托管、加密转换回托管、解密)
提前致谢!
您应该直接调用它并且不能更改它,因为方法解析选择实例成员而不是扩展方法。
TestHelper.ToString(t)
考虑以下代码:
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 中的所有 classes)。 class object
有一个 ToString()
的实现,returns 类似于 <namespace-wher-the-class-is-locatet.<class-name>
。
但是,如果我想 ToString()
我自己的不带其他参数的实现怎么办?
不,我不想在我的 class 中实现 ToString()
。我想把它作为一种扩展方法。 (类似于 SecureString 的扩展,将其从非托管、加密转换回托管、解密)
提前致谢!
您应该直接调用它并且不能更改它,因为方法解析选择实例成员而不是扩展方法。
TestHelper.ToString(t)