使用XmlSerializer在Silverlight库和MVC应用程序之间序列化/反序列化类的问题

时间:2009-04-27 22:34:01

标签: asp.net-mvc silverlight xml-serialization

以下是我的情况:

我有三个项目的解决方案:1)Silverlight App,2)Silverlight Library,3)Asp.net-MVC Web App。

在Silverlight库中,我有一个名为“MyClass”的类。在Silverlight应用程序中,我使用XmlSerializer将该类序列化为XML,并将XML发送回数据库。我在Silverlight应用程序中定期检索和反序列化该XML以使用MyClass。

当我尝试从Asp.Net-MVC应用程序中反序列化该XML时,我的问题出现了。在Asp.Net-MVC App中,这是我用来将XML反序列化为MyClass的代码:

 MySilverlightLibrary.MyClassObjects.MyClass newMyClass = null;

 Assembly ass = Assembly.Load("MySilverlightLibrary.MyClassObjects");
 Type ty = ass.GetType("MySilverlightLibrary.MyClassObjects.MyClass", true);

 XmlSerializer theSerializer = new XmlSerializer(ty);

 if( !String.IsNullOrEmpty(xmlText) )
 {
    using( XmlReader sr = XmlReader.Create(new StringReader(xmlText)) )
    {                 
       newMyClass = theSerializer.Deserialize(sr) as MySilverlightLibrary.MyClassObjects.MyClass;
    }
 }  

这是我得到的运行时错误:

  '/'应用程序中的服务器错误。

     

无法加载文件或程序集“ System.Xml ,版本= 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e”或其中一个依赖项。该系统找不到指定的文件。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集'System.Xml,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'或其依赖项之一。系统找不到指定的文件。

我注意到Silverlight Library项目中“System.Xml”引用的版本是2.0.5.0,但Asp.Net-MVC App中的“System.Xml”引用是2.0.0.0。我认为这可能是问题的原因,但我无法弄清楚如何解决它!

我一直在搞乱这个问题已经有一段时间了,这让我疯了!一如既往,非常感谢任何帮助!

由于

杰夫

1 个答案:

答案 0 :(得分:1)

你是对的 - 你遇到问题的原因是版本不匹配。 我相信你可以用Assembly binding redirection解决这个问题。