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