2011-04-05 45 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可能适合您。