Я предполагаю, что вы имеете в виду, что вы хотите запускать «Интерактивное окно Python», а не просто консоль iPython при запуске
В настоящее время нет способа запустить его при запуске. По крайней мере, без написания другого расширения, которое запускало бы команду при открытии рабочей области. Было бы просто добавить его. Вероятно, настройка рабочего пространства. Вы можете зарегистрировать проблему здесь: https://github.com/Microsoft/vscode-python/issues/new
Для вас второй вопрос: «Выполнить» в spyder, у нас есть « Запустить текущий файл в интерактивном окне Python ». Это работает на любом файле Python. Вы можете добраться до него через контекстное меню файла или через палитру команд.
ISerializable
is used to provide custom binary serialization, usually for BinaryFormatter
(and perhaps for remoting purposes). Without it, it uses the fields, which can be:
[NonSerialized]
)By implementing ISerializable
you can provide your own binary serialization mechanism. Note that the xml equivalent of this is IXmlSerializable
, as used by XmlSerializer
etc.
For DTO purposes, BinaryFormatter
should be avoided - things like xml (via XmlSerializer
or DataContractSerializer
) or json are good, as are cross-platform formats like protocol buffers.
For completeness, protobuf-net does include hooks for ISerializable
(allowing you to use a portable binary format without writing lots of code), but BinaryFormatter
wouldn't be your first choice here anyway.
With the ISerializable
you can write custom methods in your object to take over serialization when doing binary serialization, to serialize your objects in a different manner than what the default approach used by BinaryFormatter will do.
In other words, if the default approach serializes your object in a different manner than how you want it to serialize as, you can implement ISerializable for complete control. Note that hand in hand with ISerializable, there's also a custom constructor you should implement.
XmlSerialization will of course only use properties, ISerializable has nothing to do with XML serialization.
Thanks Marc and Pop for the comments, I was a bit hasty with my first answer.
Классы могут быть сериализованы в .NET одним из двух способов:
SerializableAttribute
и декорирование всех полей, которые вы не делаете хотят быть сериализованными с атрибутом NonSerialized
. (Как отмечает Марк Гравелл, BinaryFormatter
, который обычно используется для форматирования объектов ISerializable
, автоматически сериализует все поля, если они специально не отмечены иначе.) Интерфейс ISerializable
для полностью настраиваемой сериализации. Первый проще в использовании, поскольку он просто включает в себя маркировку объявлений с атрибутами, но его возможности ограничены. Последнее обеспечивает большую гибкость, но требует значительно больше усилий для реализации. must be marked with the SerializableAttribute. If a class needs to control its serialization process, it can implement the ISerializable interface. The Formatter calls the GetObjectData at serialization time and populates the supplied SerializationInfo with all the data required to represent the object. The Formatter creates a SerializationInfo with the type of the object in the graph. Objects that need to send proxies for themselves can use the FullTypeName and AssemblyName methods on SerializationInfo to change the transmitted information.
In the case of class inheritance, it is possible to serialize a class that derives from a base class that implements ISerializable. In this case, the derived class should call the base class implementation of GetObjectData inside its implementation of GetObjectData. Otherwise, the data from the base класс не будет сериализован.
Чтобы сделать объект "транспортабельным", вы должны его сериализовать. Например, если вы хотите перенести данные объекта с помощью .NET Remoting или веб-служб, вы должны предоставить методы, которые сериализуют данные вашего объекта, уменьшая количество экземпляров объекта до переносимого формата, который представляет представление объекта с высокой точностью.
Затем вы также можете взять сериализованное представление, перенести его в другой контекст, например на другой компьютер, и перестроить ваш исходный объект.
При реализации интерфейса ISerializable
класс должен предоставлять метод GetObjectData, который является включенный в интерфейс, а также специализированный конструктор, который специализируется на приеме двух параметров: экземпляр SerializationInfo, и экземпляр StreamingContext.
Если ваши классы не требуют детального контроля их состояния объекта, то вы можете просто использовать атрибут [Serializable]
. Классы, которые требуют большего контроля над процессом сериализации, могут реализовать интерфейс ISerializable.