我有一个包含一堆属性的类。如果程序员在该类型的对象上调用 ToString() 是错误的。以这个示例代码为例:
using System;
public class Foo
{
public int ID = 123;
public string Name = "SomeName";
private string ToString() { return null; }
}
public class MyClass
{
public static void Main()
{
Foo myObj = new Foo();
WL("I want this to be a compiler error: {0}", myObj.ToString());
RL();
}
#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
#endregion
}
您可以推断,如果大多数人希望将 ID 写为字符串,那么我应该实现 ToString 以便它返回 ID。但是,我认为这是一种不好的做法,因为程序员会“意外”获得工作代码。使用我的类的程序员应该指定他们想要什么。
相反,我想要的是如果有人调用 myObj.ToString() 以使其显示为编译时错误。我想我可以通过创建一个私有的 ToString() 函数来做到这一点,但这不起作用。
我提出这个问题的原因是我们最终得到了一个包含完全限定类名而不是 ID 的查询字符串。
所以问题是:有没有办法“隐藏” ToString() 函数,以便在我的类的对象上调用它会导致编译器错误?