gpt4 book ai didi

c# - 我可以从 c# 9 记录的自动生成方法中隐藏敏感属性值吗?

转载 作者:行者123 更新时间:2023-12-03 23:00:38 25 4
gpt4 key购买 nike

我正在构建一个用户管理系统,其中包含一个要向其发送命令的域主机。由于 record 属性和生成的辅助方法,命令都是 init 。但是,我很快就遇到了这种方法的问题,例如LoginUserCommandcommand.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 属性的值。

最佳答案

您可以使用 with 语法重新映射您的记录并使用 PrintMembers 代替,我认为它更清晰:

public override string ToString()
{
var builder = new StringBuilder();

(this with { Password = null }).PrintMembers(builder);

return builder.ToString();
}
也有 proposals 用于为记录引入诸如 [PrintMembersIgnore] 之类的属性,但没有实现类似的功能。然而,它可以通过代码生成来解决,这是 dotnet 团队建议的方法(请参阅线程中的评论),已经启动了 project for this

关于c# - 我可以从 c# 9 记录的自动生成方法中隐藏敏感属性值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66015437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com