给出这样一种类型:
class Supplier
{
public Supplier(string name) => Name = name;
public string Name { get; }
}
当将对象supplier
以前属于string
类型的代码重构为对象supplier
现在属于Supplier
类型的代码时,我将冒着丢失的风险来更改此类型的代码:
var supplier = new Supplier("Acme Inc.");
Console.WriteLine($"foo bar {supplier}"); // foo bar Supplier
Console.WriteLine($"foo bar {supplier.Name}"); // foo bar Acme Inc.
显然,问题是第一个输出行仍然可以编译,但生成了一个非预期的字符串,因为Object
中的ToString
返回对象类型的名称.
Is there anyway I can prevent the first output line to compile?个
或者是我唯一能得到的帮助来推翻ToString
:
public override string ToString() => Name;