2015-02-11 8 views
1

假設我有一個對象用戶,我不能編輯它的類。我如何添加一個簡單的屬性,如用戶名到對象?如何在不使用包裝的情況下將簡單屬性添加到對象?

目前我的實現是一個簡單的包裝,它是使用用戶構造的。用戶然後成爲我的包裝對象的屬性,包裝對象包含名爲用戶名的屬性。但在我看來,這不是正確的做法。注意用戶對象不是依賴對象,而且我知道擴展方法存在,但我不相信擴展方法存在,但我需要存儲用戶名,所以它不能是靜態的。

任何建議將是非常受歡迎的。

+1

繼承User並添加您的屬性。當然這假定用戶類不是密封的。順便說一句,你爲什麼認爲包裝不正確?國際海事組織包裝是要走的路。 – 2015-02-11 11:05:52

+0

您可以從對象中分開(在某種字典中)保存屬性。他們不會*屬性*(技術上)。 – Sinatr 2015-02-11 11:13:00

+0

如果用戶是「partial」類,那麼你可以定義另一個「部分用戶」類來擴展它 – 2015-02-11 11:22:56

回答

0

從某種意義上說,您要求在C#中實現Mixin模式,該模式無法直接實現,如this question中所述。但是,可以創建擴展方法(即setter和getter)而不是T類型的屬性。由於無法添加字段,因此要存儲和返回的值可以保存在Dictionary<User,T>的幕後;此方法實際上不允許財產,但它提供的解決方案不需要Userpartial或從User派生。

相關問題