当前位置:编程学习 > C#/ASP.NET >>

那位高手可以解决嘛?动态加载的纯数据自定义类,实例对象XML序列化出错

动态加载的纯数据自定义类,通过反射获取的类型,createinstance创建的实例,向消息队列作XML序列化时,报生成XML文档出错,innerexception为不能将类型“XXX”强制转换为“XXX”类型。可是看到的两个"XXX"完全相同。

请高手指点!!! --------------------编程问答-------------------- 没看明白,帮顶 --------------------编程问答-------------------- Assembly
Type
Object

--------------------编程问答-------------------- theType = EventAssembly->GetType("XXX");
Object* theObject = Activator::CreateInstance(theType);
myQueue.Send(theObject, label);


=====================================================================
InnerException.Message:无法将类型为“A.B.B.XXX”的对象强制转换为类型“A.B.C.XXX”。

StackTrace=   在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXXX.Write3_XXX(Object o)

======================================================================

捕捉到 System.InvalidOperationException
  Message="生成 XML 文档时出错。"
  Source="System.Xml"
  StackTrace:
       在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       在 System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o)
       在 System.Messaging.XmlMessageFormatter.Write(Message message, Object obj)
       在 System.Messaging.Message.AdjustToSend()
       在 System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
       在 System.Messaging.MessageQueue.Send(Object obj, String label, MessageQueueTransaction transaction, MessageQueueTransactionType transactionType)
       在 System.Messaging.MessageQueue.Send(Object obj, String label)
--------------------编程问答-------------------- 两个类的命名空间不一样 --------------------编程问答-------------------- 不是一个类型啊. --------------------编程问答-------------------- 修正:
InnerException.Message:无法将类型为“A.B.XXX”的对象强制转换为类型“A.B.XXX”。 --------------------编程问答-------------------- 结帐了吧.. 拖的太久了...饿.. --------------------编程问答-------------------- 而且你提供的数据实在少.. --------------------编程问答-------------------- more details info? --------------------编程问答-------------------- 代码如下:
1:Assembly* EventAssembly=Assembly::Loadfrom("mytype.dll");
2:String*   EventNameSpace = EventAssembly->GetTypes()[0]->Namespace;
3:Type* theType = EventAssembly->GetType(String::Concat(EventNameSpace, ".", EventNo));
4:Object* theObject = Activator::CreateInstance(theType);

5:。。。。。本行通过反射获取theObject 字段并对theObject 赋值;

6:myQueue.Send(theObject, label);------------>产生例外

错误信息:
InnerException.Message:无法将类型为“A.B.XXX”的对象强制转换为类型“A.B.XXX”。 --------------------编程问答-------------------- jf up 学习 --------------------编程问答-------------------- 没看太明白,提2点:
1。使用泛型避免强制转换问题。
2。有人提到了命名空间,同意。
另外还说一点,指针问题,因为前面看有人用到了,这是C里头的东西。在C#中我们利用的是对象的原理,把指针改头换面了的东西。不建议使用。 --------------------编程问答-------------------- 谢谢parse建议,我用的C --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 是.net 2.0 么?
是的话好像打两个补丁就好了,
以前我碰到过. --------------------编程问答-------------------- 帮顶~ --------------------编程问答-------------------- 16楼的朋友,请问是什么时候的补丁?在哪里呢?
补充:.NET技术 ,  .NET Framework
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,