問題タブ [binary-serialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NETでオブジェクトをシリアル化するための最新の実装方法(v4.0以降)
MyObject
ストレージ用にシリアル化する必要がある(いくつかの基本的なプロパティと、List(of MyObject)
再帰的である)という単純なカスタムオブジェクトがあります。XMLとBinaryのどちらにシリアル化するかはまだわかりませんが、いくつかの異なる名前空間が関係している可能性があるため、最新のメソッドを使用していることを確認したいと思います。何かが足りない。
- XMLを実行するには、
System.Xml.Serialization.XmlSerializer
- バイナリを実行するには、
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
もありますがSystem.Runtime.Serialization.Formatters.Soap.SoapFormatter
、MSDNは、BinaryFormatterを優先して減価償却されていると主張しています。上記の2番目の名前空間にすべてがあると予想していました-使用する必要があるXmlSerializerの新しいバージョンはありますか?
c# - オブジェクト内のすべてのプロパティをバイナリ シリアル化するショートカットはありますか?
すべてのパブリック プロパティをシリアル化する必要があり、プロパティが単純なオブジェクト (数値または文字列または既に実装されているオブジェクト)がある場合、作成する必要がなく、コンストラクタを毎回引数として取るISerializable
簡単な方法はありますか?GetObjectData(SerializationInfo info, StreamingContext context)
SerializationInfo
リフレクションを使用して手動で実行できることは知っていますが、.NET Framework 内にそれを行うための魔法の方法はありますか?
したがって、正しい答えは次のとおりです。
ISerializable を実装しようとしないでください。これはカスタム シリアル化用です。代わりに、クラス宣言の直前に [Serializable] 属性を追加してください。
nservicebus - Binary Serializer を使用して NServiceBus でインターフェイスをメッセージとして送信する
最近、バイナリ シリアライザーを使用して NServiceBus でメッセージを送信するようになりました。私のメッセージはすべてインターフェイスとして定義され、使用してインスタンス化されます
これにより、NServiceBus からスローされる例外が発生します。
インターフェイスのインスタンスを作成できません
スタック トレースから、SimpleMessageMapper が使用されていることがわかります。ソースを調べると、Activator.CreateInstance を呼び出していることがわかります。
私がやろうとしていることを実行することは不可能であると述べているドキュメントが見つかりません。これを修正する方法はありますか?
ありがとう、マット
c - c とバッファのポリモーフィズム
私はこの組合を持っています:
message_with_parameters
はmessage_base
最初のフィールドとして a を持ち、最初のフィールドとして asをreply_message
持ち、最初のフィールドとして as を持ちます。
したがって、基本的にはそれらのいずれにもアクセスでき、必要なすべてのデータを取得できますが、ドライバーからバッファーを取得しているので、それをメッセージにシリアル化したいと考えています。
構造体と相関しないため、バッファーへのポインターが間違っていることは既に知っていますが、固定サイズのバッファーを持つことはできません。
途中のどこかでこれをやりたい: message_with_parameters
message_base
どんな種類のデータ型を持っていても、シリアル化されます。
どうすればそれができますか?
編集:
ここに私の構造体があります:
c# - BinaryFormatter.Deserializeはどのように新しいオブジェクトを作成しますか?
ストリームをオブジェクトにBinaryFormatter
逆シリアル化すると、コンストラクターを呼び出さずに新しいオブジェクトを作成するように見えます。
これはどうですか?なぜ?これを行う.NETの他の何かがありますか?
これがデモです:
出力:
Cars constructed: 1
But there are actually two.
.net - バイナリシリアル化、クラスへの新しいフィールドの追加 - 動作しますか?
バイナリ シリアル化を使用して .NET 2.0 Remoting 経由で通信するクライアントとサーバー アプリケーションがあります。
データ転送オブジェクトのインターフェイスと実装クラスの 1 つに小さな変更が加えられました。文字列フィールドの配列が追加されました。
新しいバージョンのサーバー アプリケーションを再デプロイする場合、古いクライアントは引き続き動作しますか?
インターフェイスと直接実装から何も削除されていないため、そうなると思いますが、よくわかりません。
おそらく別の質問に要約されます-入力バイナリストリームでデータを見つけることができないフィールドをnullに初期化することで、このような状況を処理するのに「十分に賢い」バイナリデシリアライザーですか、それとも壊れて例外をスローするつもりですか?
c# - 条件付き C# バイナリ シリアル化
BinaryFormatter を使用して、条件によってクラスとその変数をシリアル化しています。例えば:
変数 B は、ファイル ストレージにシリアル化するときではなく、リモーティング時にのみシリアル化する必要があります。質問:
1) XmlSerialization では、[XmlIgnore] と {PropertyName}Specified を使用して条件付きでプロパティを無視できることを知っています。それは [NonSerialized] と同等の方法ですか?
2) [Serializable] 属性を持つクラスの場合、実行時にそれを無視する方法は?
c# - 逆シリアル化しようとすると「アセンブリが見つかりません」というメッセージが表示され、クライアントからサーバーへは機能しますが、他の方法では機能しません
このトピックに関する同様の質問と回答をたくさん読みましたが、なぜこの問題が発生するのかまだわかりません。
クライアント プロジェクトとサーバー プロジェクトがあり、どちらも作成した同じ dll ライブラリを使用しています。クライアントでオブジェクトをシリアル化すると、サーバーで逆シリアル化しても問題ありませんが、サーバーがオブジェクトをシリアル化した後にクライアントで逆シリアル化しようとすると、「アセンブリが見つかりません」という例外がスローされます。
シリアル化と逆シリアル化のコードは、クライアントとサーバーの両方で同一です。どちらも同じ dll を認識して動作します。問題の原因となるアイデアはありますか?
delphi - バイナリシリアル化ファイル-Delphi
Delphiでシリアル化された古いファイル形式を逆シリアル化しようとしています。バイナリシリアル化を使用しています。ファイルに含まれる非常に高レベルのレコードを除いて、ファイルの構造については何も知りません。
この問題を解決するためにどのような手順を実行しますか?ツールなどはありますか?
.net - シリアライズ可能な属性 .NET
オブジェクトのクローンを作成するために、.NET でバイナリ シリアル化を使用しています。<Serializable()>
シリアライザーがクラスを処理するために、属性でマークする必要がある独自のクラス。ただし、これは任意のオブジェクトで使用される関数であるため、私は疑問に思っていました:
<Serializable()>
属性でマークされていなくても、シリアライザーにオブジェクトをシリアライズさせることは可能ですか? そうでない場合、属性を任意のクラスに「自動適用」する方法はありますか?
編集。私の主な関心事は、.NET Framework に既に存在する POCO オブジェクトを複製できるようにする必要があるということです。それらはすべてすでにシリアライズ可能ですか?