2010-12-15 41 views
5

Ben VS2008 aşağıdaki Tasarımcı hatası alıyorum:'Data.TimeLineChartedDay []' türündeki nesne 'Data.TimeLineChartedDay []' türüne dönüştürülemiyor?

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 YIĞININIZ: oluştu Aşağıdaki

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) 

Önceki Bu hataya: Bir öz yazılı denetimi eklenir. VS, aşağıdaki iletiyle çöktü: "Class TimeLineChartedDay, seri hale getirilebilir olarak işaretlenmez". Bu tuhafı buldum çünkü 'Seri hale getirilebilir' özniteliğinden şikayet etmeyen başka bir makinede yazılmıştır. Özniteliği sınıfa ekledim ve önceden belirtilen hataya rastladım.

+1

Sınıfınız neden bir ResX dosyasında? – SLaks

+0

??? benim sınıf bir resX dosyasında değil .. ??, sadece standart bir .cs dosya .. –

+0

Ama bir .ResX içine serileştiriliyor. Niye ya? – SLaks

cevap

10

Denetiminiz, muhtemelen olmaması gerektiğinde sınıf örneğini serileştirmeye çalışıyor.

TimeLineDisplay açığını ortaya çıkaran özelliğe muhtemelen [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] eklemelisiniz.

Daha ayrıntılı bilgi için lütfen kontrolünüzü gösteriniz.

+0

Öznitelik ekledim, ancak boşuna ... Şimdi bu tasarımcı hatası alıyorum: –

+0

[A] System.Collections.Generic.List'1 [Data.TimeLineChartedDay], [B] System.Collections için kullanılamaz .Generic.List'1 [Data.TimeLineChartedDay]. A tipi 'mscorlib, Sürüm = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' kaynağından 'LoadName' bağlamında 'C: \ WINDOWS \ assembly \ GAC_32 \ mscorlib.dll \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll' kaynağından gelir. . B tipi 'mscorlib, Sürüm = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' kaynağından 'LoadName' bağlamında 'C: \ WINDOWS \ assembly \ GAC_32 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll' . –

+3

Projenizi yeniden oluşturun ve Visual Studio'yu yeniden başlatın. Listeyi kaldırmak için designer.cs ve/veya .ResX'i manuel olarak düzenlemeniz gerekebilir. – SLaks

1

Özel bir denetimle aynı sorunu yaşadım. Denetleyiciyi tasarımcı aracılığıyla eklerken "Sınıf serileştirilebilir olarak işaretlenmemiş" iletisiyle başarısız olmasına rağmen, Designer.cs dosyasına bir değişken ve bir .resx dosyasına bir girdi ekledi.

Bu girişleri elle kaldırmak zorunda kaldım ve her şey iyi çalıştı. Resx dosyası için -> Birlikte Aç -> Kaynak Düzenleyici'ye sağ tıklayıp, sınıf adını içeren girişleri aradım ve onları sildim.

+0

Resx dosyasını düzenlemek benim için yaptı. Teşekkürler heaps adam! – CrazyTim

0

Özel bir denetim içeren bir Form ile bu sorunu yaşadım. özel denetim, özel bir sınıf X için bir ortak özelliği vardı (Sınıf X seri hale basit DTO oldu ve bir varsayılan kurucu içeriyordu.) form tasarımcısı gibi bir hata görüntülenen:

"Object of type “X” cannot be converted to object of type “X”"

Eğer çift ise formlar .resx dosyasına tıklayın, resx tasarımcısı form için tüm kaynakları gösterecektir. (not: tasarımcının sol üst köşesinde, kaynak türüne göre filtrelenecek bir düşüş var). Hatalı nesne bir satır öğesi olarak görünür (benim durumumda, "diğer" türünde liste idi). Satır öğesini silin ve tümünü kaydedin.

İlgili konular