Альтернативный способ сериализации данных с помощью Resource Manager - PullRequest
0 голосов
/ 14 октября 2019

У меня есть пользовательский элемент управления, унаследованный от компонента, и одним из свойств моего пользовательского элемента управления является тип MemoryStream. Я сохранил некоторую информацию о состоянии макета в свойстве LayoutStream, используя MemoryStream, который создается в файле ресурсов. Но в NetCore 3.0 MemoryStream не поддерживается для сериализации данных, которые хранятся в файле ресурсов. Пожалуйста, обратитесь к этой ссылке для этой проблемы ("https://social.msdn.microsoft.com/Forums/windows/en-US/7b16d0c7-4d31-4455-876b-1c757d75882c/not-able-to-serialize-memorystream-in-net-core-3?forum=winforms".

Исключение происходит в NetCore 3.0

Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Runtime.Serialization.Formatters.dll
An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in System.Runtime.Serialization.Formatters.dll
Type 'System.IO.MemoryStream' in Assembly 'System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' is not marked as serializable.

Пожалуйста, предложите любое альтернативное решение для сериализации данных, которые хранятся в файле ресурсов

this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));

customcontrol  = new MyControl(this.components);
this.panel2 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.customcontrol )).BeginInit();
this.SuspendLayout();
// 
// customcontrol  
// 


this.customcontrol.LayoutStream = ((System.IO.MemoryStream)(resources.GetObject("customcontrol  .LayoutStream")));
...