'Data.TimeLineChartedDay []'类型的对象无法转换为类型'Data.TimeLineChartedDay []'?
我得到在VS2008以下设计错误:'Data.TimeLineChartedDay []'类型的对象无法转换为类型'Data.TimeLineChartedDay []'?
Object of type 'Data.TimeLineChartedDay[]' cannot be
converted to type 'Data.TimeLineChartedDay[]'.
???
public class TimeLineDisplay
{
private List<TimeLineChartedDay> chartedDays = new List<TimeLineChartedDay>();
public List<TimeLineChartedDay> ChartedDays
{
get { return chartedDays; }
set { chartedDays = value; }
}
}
[Serializable]
public class TimeLineChartedDay
{
private DateTime date;
private int chartValue;
public DateTime Date
{
get { return date; }
set { date = value; }
}
public int ChartValue
{
get { return chartValue; }
set { chartValue = value; }
}
public TimeLineChartedDay()
{
}
}
VS STACK:
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)
在此之前的错误以下发生: 我添加了一个自写控制。 VS崩溃与以下消息:“类TimeLineChartedDay未标记为可序列化”。我发现这很奇怪,因为它是写在另一台机器上的,它并没有抱怨'Serializable'属性。我将这个属性添加到了课堂上,并且偶然发现了前面提到的错误。
您的控件尝试序列化类实例时,它可能不应该。
您应该添加[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
到暴露TimeLineDisplay
的财产。
如需更多具体建议,请向我们展示您的控制权。
我添加了属性,但无济于事......我现在得到这个设计器错误: – 2010-12-15 16:20:18
[A] System.Collections.Generic.List'1 [Data.TimeLineChartedDay]不能转换为[B] System.Collections .Generic.List'1 [Data.TimeLineChartedDay]。在位置'C:\ WINDOWS \ assembly \ GAC_32 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll'的上下文'LoadNeither'中,类型A源自'mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 。类型B源自位于'C:\ WINDOWS \ assembly \ GAC_32 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll'位置的上下文'LoadNeither'中的'mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 。 – 2010-12-15 16:21:41
重建您的项目并重新启动Visual Studio。您可能还需要手动编辑designer.cs和/或.ResX以删除列表。 – SLaks 2010-12-15 16:22:43
我对自定义控件有同样的问题。 尽管通过设计器添加控件失败,并显示消息“类未标记为可序列化”,但它向Designer.cs文件添加了一个变量,并添加了一个.resx文件条目。
我不得不手动删除这些条目,一切运行良好。对于resx文件,我做了右键单击 - >打开方式 - >源代码编辑器,搜索包含类名称的条目并将其删除。
编辑resx文件为我做了。感谢堆人! – CrazyTim 2016-04-27 02:34:35
我有一个包含自定义控件的窗体的这个问题。自定义控制有一个自定义类十一个公共属性(X类是一个简单的DTO,序列化的,并且包含一个默认的构造。)表单设计器显示错误,如:
"Object of type “X” cannot be converted to object of type “X”"
如果您双击单击表单.resx文件,resx设计器将显示表单的所有资源。 (注意:在设计器的左上方,有一个下拉按照资源类型进行过滤)。违规对象显示为行项目(在我的情况下,它是在“other”类型下的监听)删除行项目并保存全部。
为什么你的课程在ResX文件中? – SLaks 2010-12-15 16:02:39
???我的课程不在resX文件中.. ??,只是一个标准的.cs文件。 – 2010-12-15 16:09:33
但它被序列化为一个.ResX。为什么? – SLaks 2010-12-15 16:23:25