2010-05-21 55 views
2

不知道這個問題的措辭是準確的,但這裏是我想要做的:我要與數據綁定一些字符串一類是:如何提供屬性級別的字符串格式?

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

綁定時,一切都將正常運行。在後端,我正在寫一個文件,並且我希望MyProperty2始終使用某種加密算法進行加密。我希望我的後端代碼編寫每個字符串,而不需要知道需要加密(我希望類能夠知道它應該被加密,而不是消費者)。我可以用類型轉換器或類似的東西來做到這一點嗎?

編輯:還有其他的情況。一些我想格式化爲「Y」或「N」的布爾值,我想格式化爲「Enabled」/「Disabled」等的其他布爾值。我可以編寫(並寫入)輔助方法,並讓文件編寫器調用輔助方法根據需要,我只是想知道如果沒有文件編寫者需要知道哪些對象需要哪種格式並讓對象將其告訴文件編寫者,是否有辦法做到這一點。

回答

0

我不知道你想實現什麼,但你可以使用一個加密的私人支持字段,然後解密/加密在屬性settor。寫入文件時,寫入後臺字段,而不是屬性。

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

或者,您可以在讀取/寫入文件時進行加密。但是,如果它很敏感,則可能需要將其保存在內存中。

+0

我喜歡這個想法。唯一的缺點是可能會進行大量轉換,當我真的想要一種方式(通過屬性或某物)來標記具有本質上是ToString覆蓋的屬性時。當然,使用已經是字符串的類型時,這會變得更加棘手......但是這種方法可以解決這個問題。 – 2010-05-21 14:43:06

0

您可以在MyClass中創建一個private function來執行所需的加密。然後在獲取方法MyProperty2中調用私有函數。

E.g.

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

雖然不會影響數據綁定嗎?在UI中,我將MyClass綁定到某個WPF頁面,並且我不希望在那裏發生加密。 – 2010-05-21 14:19:58

相關問題