'Data.TimeLineChartedDay []'类型的对象无法转换为'Data.TimeLineChartedDay []'类型?

Run*_*CMD 5 .net c# visual-studio

我在VS2008中遇到以下设计器错误:

 Object of type 'Data.TimeLineChartedDay[]' cannot be 
 converted to type 'Data.TimeLineChartedDay[]'.  
Run Code Online (Sandbox Code Playgroud)

???

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()
    { 

    }
}
Run Code Online (Sandbox Code Playgroud)

VS堆栈:

    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)  
Run Code Online (Sandbox Code Playgroud)

在此错误之前发生了以下情况:我添加了一个自编写的控件.VS崩溃时出现以下消息:"Class TimeLineChartedDay未标记为可序列化".我发现这很奇怪,因为它写在另一台机器上,并没有抱怨'Serializable'属性.我将该属性添加到了类中,并偶然发现了前面提到的错误.

SLa*_*aks 10

您的控件正在尝试序列化类实例,但可能不应该.

您应该添加[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]到公开的属性TimeLineDisplay.

有关更具体的建议,请告诉我们您的控制权.

  • 重建项目并重新启动Visual Studio.您可能还需要手动编辑designer.cs和/或.ResX以删除列表. (3认同)