【问题标题】:serialize a non-serializable object of type Type?序列化 Type 类型的不可序列化对象?
【发布时间】:2013-07-16 16:40:46
【问题描述】:

我有一个 Type 类型的对象

Type typ = CreateDynamicType();

以及该类型的创建对象

object instance = Activator.CreateInstance(typ);

此实例创建良好。仍然没有问题。 现在我有两个方法 CreateRawXML()、createSOAPXml()。 都序列化对象并返回可序列化字符串。我需要一个 rawxml 和一个 SOAPXML。在第一种情况下,Raw XML 创建得很好,但是当我尝试创建 SOAPXML 时出现错误(无法序列化对象)。我检查了该对象的 isserializable 属性它的错误。由于它的元数据和只读属性,我无法更改它..

要么我必须从那个不可序列化的对象创建一个序列化对象 或者我需要从原始 XML 创建 SOAPXML 或者别的什么...请建议...

我正在使用反射从 CreateDynamicType() 方法动态创建该 Type 类。 我正在为 WCF 请求做这一切 请推荐

【问题讨论】:

  • 如果它们太复杂,您是否会添加 CreateRawXML 和 createSOAPXml 的内容,或者有关它们如何工作的更多信息(例如,您使用什么类型进行序列化)?如果没有它,我们或许可以为您提供帮助,但如果您向我们提供更多信息,我们可以更好地针对您的问题。

标签: c# xml wcf soap xml-serialization


【解决方案1】:

您可能不需要序列化 ​​Type - 考虑序列化类型的全名(可能带有它来自的程序集的全名以使加载类型更容易)是否足以满足您的情况。

当然,如果您尝试在某个远程进程中创建此类型的对象,只需完整的类型名称就足够了(假设其他进程可以访问实现该类型的程序集)。

【讨论】:

  • 我认为他不是在尝试序列化 Type,我认为他是在尝试序列化 Type 的实例。编辑:嗯,仍然不具体。我的意思是,看起来他在运行时获取了一个类型,创建了一个实例,然后尝试序列化该实例。
  • @DavidSchwartz - 你说得对 - 标题似乎建议序列化 Type,但正文并没有在谈论它......我现在就让它保持原样 - 也许 OP 会评论......
  • @DavidSchwartz 正在以完美的方式思考......我正在寻找同样的方式
  • 它有用吗人...object obj = System.Runtime.Serialization.FormatterServices .GetUninitializedObject(t);
猜你喜欢
  • 2021-11-13
  • 2023-01-20
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 2012-01-29
相关资源
最近更新 更多