2011-04-05 44 views
3

問題是否將匿名類型的實例序列化到會話中?

我有一次性使用對象,它是幾個對象及其屬性的組合。我想將這個匿名類型存儲到會話中並再次將其撤回。

問題這就需要回答

  1. 這是一個壞主意?如果是這樣,是否有更好的方法? (不創建可序列化的對象並將其存儲在會話中)

  2. 也想知道是否可以這樣做?

+0

和RE 「序列化」 ...... 「這取決於」 :)匿名類型是從來沒有'[Serializable接口]''也不ISerializable',這樣既'BinaryFormatter'和'XmlSerializer'會恨他們......但***如果你絕對必須***,他們可以用自定義代碼序列化。但寫DTO更快,更簡單,更安全。 – 2011-04-05 17:44:49

回答

6

it is一個壞主意;匿名類型在單個位置之外是不好的選擇。有一種叫做「以身作則」的東西,但這不是很好的做法。正確的做法就是「寫一個簡單的類來表示該狀態」。隨着自動道具是微不足道的。

動態是另一個可行的選擇(可以與anon類型對話),但是又一次:你試圖在這裏保存什麼?寫POCO/DTO已經......它甚至沒有需要在許多情況下,序列化(除非OU具有工藝外的一個狀態服務器;在這種情況下,它有一個已知的DTO是重要)。

+1

我希望避免做額外的工作。但我想maintanablity更好,然後我打字少。謝謝 – gh9 2011-04-05 17:21:45

3

匿名類型旨在用於單個方法體內。任何時候你開始在方法之間傳遞它們,你都會有點痛苦。在這一點上簡單得多,然後定義一個具體類型並使用它。

1

如果您想在匿名類型和傳統POCO之間找到靈活的中間地帶,NameValueCollection可能適合您。