在没有类型引用的情况下反序列化会话对象?

时间:2009-03-17 16:26:56

标签: .net asp.net serialization

我在会话中存储了一个POCO(普通的旧clr对象),并且希望能够从另一个进程(B)中引用该对象的属性。我不希望独立进程(B)需要引用定义poco类的dll。是否可以将保存的对象(在会话中)转换为可读的内容(例如xml)而不引用对象的类?

4 个答案:

答案 0 :(得分:1)

你不能让程序集获取对象的元数据,也许你可以避免引用dll并使用反射。

答案 1 :(得分:1)

您必须创建自己的自定义代码来序列化和/或反序列化对象。

如果没有对程序集的引用,.NET就没有所需的元数据来为您完成工作。

您只需向生成的XML添加属性即可指定对象类型。

<Object Type="1">
    <Property1>Value</Property1>
</Object>

当然,目标代码需要知道如何处理此类型属性,但您不需要引用实际的.NET程序集。

答案 2 :(得分:0)

如果你只需要对象的快照,那么是的,你可以简单地序列化它(或者只是你感兴趣的属性),然后将序列化数据传递给进程B.XmlSerializer类可能提供最简单的方法序列化对象,然后进程B可以使用任何标准XML解析器读取数据。

答案 3 :(得分:0)

忘记如何序列化 - 如何在另一个进程中检索数据。这个其他过程是什么?如果它不是另一个ASP.NET页面,那么它将无法访问Session状态!