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

时间:2010-05-21 14:12:48

标签: c# .net

不确定问题措辞是否准确,但这就是我想要做的事情:我想在一个类中包含一些字符串:

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

数据绑定时,一切都正常。在后端,我正在写一个文件,我希望MyProperty2始终使用一些加密算法加密。我希望我的后端代码能够编写每个字符串而无需知道需要加密(我希望类知道它应该加密,而不是消费者)。我可以使用类型转换器或类似的东西吗?

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

2 个答案:

答案 0 :(得分:0)

您可以在private function中创建一个MyClass来执行您想要的加密。然后在MyProperty2的Get方法中调用私有函数。

E.g。

public string MyProperty2 
{ 
   get { return DoEncrypt(myProperty2);}
   set; 
}

答案 1 :(得分:0)

我不确定您要实现的目标,但您可以使用加密的私有支持字段,然后在属性设置器中进行解密/加密。写入文件时,请写入支持字段,而不是属性。

 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 );
      ...
 }

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