2011-02-02 100 views
0

我已經閱讀了用於通過屬性設置默認屬性的帖子,以DefaultValue結尾是用於設計模式或序列化。如何寫一個屬性來設置自動屬性的默認值

但是,有沒有辦法寫一個屬性,將做這些帖子要求:默認該屬性的某個值。

如果有辦法 - 如何開始寫這樣的屬性?

感謝, L-

回答

3

你不能,基本上是這樣。

不過,您可以在構造函數中設置默認值。

碰巧我做了實現了一些最近做過的事情,但那是使用基於工廠的構造;工廠檢查[DefaultValue]並通過反射設置值。但是除非使用像PostSharp這樣的重寫器,否則屬性不會導致任意代碼執行。

如果構造函數距離您太遠,您將不得不使用字段初始值設定項,並針對該字段寫入get/set

0

不幸的是屬性只是元數據,這意味着它們不能運行或自己做一些事情。
然而,沒有什麼能夠阻止你編寫一個名稱爲SetDefaultValues的擴展方法,它從屬性中讀取默認值並將它們分配給屬性。

我在最近的一個項目中做過類似的事情,事實證明這是一個很好的決定,因爲它將聲明式風格中定義的所有默認值保存在一個地方

有一個interesting article on CodeProject針對不同的策略實施基於[DefaultValue]的初始化並比較它們的性能。我建議你檢查一下。