【发布时间】:2011-01-30 19:30:36
【问题描述】:
我有一个我自己无法解决的奇怪问题。我的 mvp 项目模型中设计为单例的类导致 InvalidCastException。
错误的来源可以在此代码行中找到,其中将反序列化的对象分配给类的实例变量:engineObject = (ENGINE)xSerializer.Deserialize(str);。每当我尝试将我的一个用户控件添加到表单或不同的 UC 时,都会发生这种情况。我所有的 UC 都有一个特殊的 Presenter,它可以访问上面提到的单例类的实例变量。
这是我尝试在某处添加 UC 时得到的结果:
'System.TypeInitializationException: The type initializer for 'MVP.Model.EngineData' threw an exception. ---->
System.InvalidCastException: [A]Engine cannot be cast to [B]Engine. Type A originates from 'MVP.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither'
at location '[...]\AppData\Roaming\Microsoft\VisualStudio\9.0\ProjectAssemblies\uankw1hh01\MVP.Model.dll'.
Type B originates from 'MVP.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither'
at location '[...]\AppData\Roaming\Microsoft\VisualStudio\9.0\ProjectAssemblies\u_hge2de01\MVP.Model.dll'
...
所以我不知何故有两个程序集,它们不是从我的项目文件夹访问的,而是从 VS 临时文件夹访问的?我用谷歌搜索了很多,只发现了这个:IronPython Exception: [A]Person cannot be cast to [B]Person。提供了一个解决方案,但它涉及 IronPhyton,我不知道在我的项目中在哪里使用它。
【问题讨论】:
标签: c# exception user-controls assemblies mvp