c# - 如何提供属性级字符串格式?

标签 c# .net

不确定问题的措辞是否准确,但这是我想做的:我想对一个包含一些字符串的类进行数据绑定(bind):

class MyClass
{
    public string MyProperty { get; set; }
    public string MyProperty2 { get; set; }
}

数据绑定(bind)时,一切正常。在后端,我正在写入一个文件,我希望 MyProperty2 始终使用某种加密算法进行加密。我希望我的后端代码在不需要知道需要加密的情况下编写每个字符串(我希望类知道它应该被加密,而不是消费者)。我可以使用类型转换器或类似的东西来做到这一点吗?

编辑:还有其他情况。一些 bool 值我想格式化为“Y”或“N”,其他 bool 值我想格式化为“启用”/“禁用”等。我可以编写(并且已经编写)辅助方法并让文件编写器调用辅助方法在适当的情况下,我只是想知道是否有一种方法可以在文件编写器不需要知道哪些对象需要哪种格式并让对象将其告知文件编写器的情况下执行此操作。

最佳答案

我不确定你到底想达到什么目的,但你可以使用一个加密的私有(private)支持字段,然后在属性 setter 中解密/加密。写入文件时,写入支持字段,而不是属性。

 private string encryptedProperty2;
 public string MyProperty2
 {
      get { return this.Decrypt( this.encryptedProperty2 ); }
      set { this.encryptedProperty2 = this.Encrypt( value ); }
 }

 private void Init()
 {
     ...
     this.encryptedProperty2 = ... read from file ...
     ...
 }

 public void Save()
 {
      ...
      writer.Write( this.encryptedProperty2 );
      ...
 }

或者,您可以在读取/写入文件时进行加密。但是,如果它很敏感,您可能希望将其加密保存在内存中。

关于c# - 如何提供属性级字符串格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882797/

相关文章:

c# - 转换为 List<T> 以返回函数

c# - 我应该在多大程度上处理代码中的网络问题?

c# - 关于静态和非静态方法

c# - Json.Net PopulateObject 附加列表而不是设置值

c# - 如何设置 .NET WindowsAuthentication - 当我希望它使用实际用户时,名称总是显示为 "IIS APPPOOL\Classic .NET AppPool"

c# - 如何在自定义用户控件(.Net 4、Winforms)上使用项目集合编辑器?

c# - 如何使用 C# 代码而不是 XAML 启用窗口镶边?

javascript - 如何使用 fetch() javascript 方法将数据发布到 .NET Core Web API

.net - mkbundle 未从当前目录找到依赖项

c# - 如何将异步 "await"添加到 addrange select 语句?