Visual Studio 2008,WinForms设计器类型转换

时间:2009-10-19 10:47:36

标签: .net winforms visual-studio-2008

有一个问题让我有点疯狂。我有一个包含usercontrols的winforms项目,它使用另一个项目中的类型,该项目由add project引用。我已经检查了引用,它们都很好,UI项目中只有一个引用到服务,这是通过添加项目引用。我可以通过删除resx文件或在设计器中设置使用resx的错误行来解决此问题。但是每次我都这么做时间。我用谷歌搜索死亡,并在这里检查没有喜悦。任何人都有任何指针。堆栈跟踪错误如下

TIA

错误:

Object of type 'NewSchool.Services.Document.IDocumentDto[]' cannot be converted to type 'NewSchool.Services.Document.IDocumentDto[]'. 

堆栈追踪:

at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.RtFieldInfo.InternalSetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture, Boolean doVisibilityCheck, Boolean doCheckConsistency)
at System.Reflection.RtFieldInfo.InternalSetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture, Boolean doVisibilityCheck)
at System.Runtime.Serialization.FormatterServices.SerializationSetValue(MemberInfo fi, Object target, Object value)
at System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder holder, Boolean bObjectFullyComplete)
at System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder holder)
at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Parse(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at System.Resources.ResXDataNode.GenerateObjectFromDataNodeInfo(DataNodeInfo dataNodeInfo, ITypeResolutionService typeResolver)
at System.Resources.ResXDataNode.GetValue(ITypeResolutionService typeResolver)
at System.Resources.ResXResourceReader.ParseDataNode(XmlTextReader reader, Boolean isMetaData)
at System.Resources.ResXResourceReader.ParseXml(XmlTextReader reader) 

3 个答案:

答案 0 :(得分:0)

唯一容易想到的是你有某种循环参考。 也许在这种情况下,这是由于引用了服务而另一个项目引用了类。

您是否需要与服务项目进行交互?

答案 1 :(得分:0)

我敢打赌你在一些控件中将IDocumentDto []作为属性公开?

为什么会发生我无法告诉你。 (我认为这与Visual Studio试图在设计时创建接口实例以在属性网格中公开它有关,但我可能错了。我不是一个GUI人,我的99%的工作都在中间层。)

要修复它,我创建实际的方法(不是属性)来获取和设置变量。

答案 2 :(得分:0)

这恰好发生在我身上,并没有那些解决方案适合我。 我终于找到了原因。 Designer添加了resx文件,用于在屏幕上放置BindingSource。 还有一个奇怪的资源,一个控件放在控件上,没有任何价值。 删除这些资源后,它会再次运行。