2017-10-24 10 views
0

型に変換することができません。それは正常に動作しますが、このコントロールをフォームに追加すると(フォームが同じアセンブリ内にあるかどうかは関係ありません)、ビジュアルスタジオ(2017)でそのフォームを開こうとすると、フォームは次のようになります。次のエラーメッセージが表示されます。オブジェクトは「X []」私はこのような性質を持つコントロールを持っている「X []」

'I []'のオブジェクトは 'I'型に変換できません。 System.RuntimeType.CheckValue(Object値、バインダーでSystem.RuntimeType.TryChangeTypeで

(Object値、バインダーバインダー、 CultureInfoカルチャ、ブールneedsSpecialCast):のコールスタックと

バインダー、 System.Runtime.Serialization.FormatterServices.SerializationSetValuでSystem.Reflection.RtFieldInfo.UnsafeSetValue(オブジェクトobj、Object値、 のBindingFlags invokeAttr、バインダーバインダー、CultureInfoカルチャ)でのCultureInfo 培養のBindingFlags invokeAttr) システムでSystem.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder ホルダー)で System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder ホルダー、ブールbObjectFullyComplete)におけるE(のMemberInfo Fiのオブジェクト対象オブジェクト値) System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(オブジェクトOBJ で.Runtime.Serialization.ObjectManager.RegisterObject(オブジェクトobj、 Int64のオブジェクトID、たSerializationInfo情報、Int64のidOfContainingObj、 のMemberInfo部材のInt32 [] arrayIndex) 、ParseRecord pr、ParseRecord objectPr、Boolean bIsString)、 にあります。System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseO System.Runtime.SerializationでSystem.Runtime.Serialization.Formatters.Binary .__ BinaryParser.Run()で System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseでbjectEnd(ParseRecord PR)(ParseRecord PR) System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(ストリーム serializationStream、HeaderHandlerハンドラ、ブールで.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler ハンドラ、__BinaryParser serParser、ブールはFCheck、ブール isCrossAppDomain、IMethodCallMessage methodCallMessage) fCheck、ブール値 isCrossAppDomain、IMethodCallMessageメソッド呼び出しメッセージ) にSystem.Runtime.Serialization.Formatters.Binary.Bina System.Resources.ResXResourceReader.ParseDataNodeでSystem.Resources.ResXDataNode.GetValue(ITypeResolutionService typeResolver)で System.Resources.ResXDataNode.GenerateObjectFromDataNodeInfo(DataNodeInfo dataNodeInfo、ITypeResolutionService typeResolver)でryFormatter.Deserialize(ストリーム serializationStream)(のXmlTextReader リーダー、ブールisMetaData)。 System.Resources.ResXResourceReader。ParseXml(のXmlTextReaderリーダー)

Iは、それぞれhttps://stackoverflow.com/a/29720/68936https://stackoverflow.com/a/29717/68936、当たりとして

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

又は

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 

を追加しようとしました。

私も無駄にhttps://stackoverflow.com/a/16657926/68936

あたりとして

private BindingList<I> myX = new SortableBindingList<I>(); 
public BindingList<I> myX { get { return myX; } } 

とゲッターセッターを交換しようとしています。私は開いているすべてのドキュメントを閉じて、ソリューションを閉じて、Visual Studioを再起動し、両方のアセンブリを再構築しようとしましたが、何もこれを解決するようです。

答えて

0

私は、これは

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public BindingList<IPosition> Positions { get; private set; } = new SortableBindingList<IPosition>(); 

でAND含むフォーム(いないコントロールの)のの.resxファイルを編集して、このようなXML要素を除去することにより、仕事を得ることができました:

<data name="controlName.X" mimetype="application/x-microsoft.net.object.binary.base64"> 
    <value> 
     AAEAAAD/////AQAAAAAAAAAMAgAAAJsBSW50ZXJmYWNlc0ludmVzdG1lbnRzLCBWZXJzaW9uPTEuMC4w 
     LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dLCBtc2NvcmxpYiwgVmVyc2lv 
     bj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkM 
     AwAAAExJbnRlcmZhY2VzSW52ZXN0bWVudHMsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFs 
     LCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAABOU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAx 
     W1tLYW1hVHJlbmRhLkludGVyZmFjZXMuSW52ZXN0bWVudHMuSVBvc2l0aW9uAwAAAAZfaXRlbXMFX3Np 
     emUIX3ZlcnNpb24EAAAtS2FtYVRyZW5kYS5JbnRlcmZhY2VzLkludmVzdG1lbnRzLklQb3NpdGlvbltd 
     AwAAAAgIAgAAAAkEAAAAAAAAAAAAAAAHBAAAAAABAAAAAAAAAAQrS2FtYVRyZW5kYS5JbnRlcmZhY2Vz 
     LkludmVzdG1lbnRzLklQb3NpdGlvbgMAAAAL 
</value> 
    </data> 

DesignerSerializationVisibility.Hiddenを追加するだけでは、既存の.resxファイルから既存のデータノードを削除するだけでは不十分です。

関連する問題