我正在构建一个用户管理系统,使用一个域主机发送命令。这些命令是 record
,既因为其具有init
-only属性,也因为生成了帮助方法。然而,对于例如LoginUserCommand
,我很快遇到了问题。
command.ToString()
返回类似以下内容(添加了格式):
LoginUserCommand {
Identity = 10000000-1111-2222-3333-444444444444,
CorrelationId = 20000000-1111-2222-3333-444444444444,
Timestamp = 2013-07-26T16:45:20Z,
IssuingUserId = 30000000-1111-2222-3333-444444444444,
EntityId = a80c081c-cf91-4304-9baa-20fb20c8d9f7,
IPAddress = 127.0.0.1,
Password = ThisIsAPr0blem
}
显然,我可以通过覆盖在需要时重写ToString()
的类上。天真地说,我可能会做一些像这样的事情:
public override string ToString()
{
return base.ToString()
.Replace(Password, "********");
}
但我在想是否忽略了一些内置的方法,可以让生成的 ToString()
方法屏蔽 Password
属性的值。
override
替换为virtual
。只有当记录继承另一条记录时,才能使用override
。但是,如果您想防止编译器生成PrintMembes
,则可以将其提供为您想要的实现方式的virtual
。 - Youssef13