問題タブ [iserializable]
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.
c# - ISerializableインターフェースのポイントは何ですか?
そのインターフェースを持たないクラスをシリアル化できるようですので、その目的がわかりません。
c# - WinForms C# でのカスタム オブジェクト タイプのクロスプロセス ドラッグ アンド ドロップ
この質問は私が興味を持っているものに近いですが、完全ではありません。
C# で記述された .NET WinForms アプリケーションがあります。ListView
C# オブジェクトの配列を表示するコントロールがあります。これらのリストビュー項目を同じアプリケーション内の別のフォームにドラッグ アンド ドロップできるように接続し、オブジェクトの配列 (type Session
) をその別のフォームのドロップ ハンドラに適切に渡します。
ただし、アプリケーションの複数のインスタンスを実行するクロスプロセスのドラッグ/ドロップをサポートしたいと考えています。これは機能するように見えますが (GetDataPresent
成功するなど)、実際にデータを取得しようとすると最終的に例外がスローさobject[]
れSession[]
ます。
これを機能させるためにオブジェクトに実装する必要があるかどうかは誰にもわかりませんか? ISerializable
普段なら単純にやってみるのですがISerializable
、このクラスに実装するのはかなり大変で、変な副作用が出るのではないかと心配です。
UPDATE : 実装ISerializable
しても役に立ちません。メソッドが呼び出されることはありません。同様に、Serializable
属性をクラスに追加してもまったく影響はありません。他のアイデアはありますか?
c# - Serializable属性を使用することとISerializableを実装することの違いは何ですか?
Serializable
属性を使用することとISerializable
インターフェースを実装することの違いは何ですか?
.net - ISerializable と下位互換性
メインクラスが属性でマークされている最適化なしで、binaryFormatterを使用してアプリケーションデータをファイルストリーム(「data.oldformat」という名前のファイルなど)にシリアル化する古いアプリケーションを操作する必要があります
そしてシリアルコード
シリアライゼーション/デシリアライゼーション プロセスを最適化するために、クラスに ISerializable インターフェイスを実装させ、最適化されたシリアライゼーション ルーチンをいくつか書きました。
最適化は非常にうまく機能しますが、下位互換性のために古いファイル内のデータを再取得する方法を見つけなければなりません。
どうやってやるの??
ピエルルイジ
.net - ISerializable を実装するオブジェクトの循環参照の解決
私は独自の IFormatter 実装を作成していますが、両方とも ISerializable を実装する 2 つの型の間の循環参照を解決する方法が思いつきません。
通常のパターンは次のとおりです。
次に、これを行います。
すぐに使用できる BinaryFormatter を使用して b をシリアル化および逆シリアル化すると、上記の参照等価性のテストは予想どおり true を返します。しかし、カスタム IFormatter でこれを実現する方法が思いつきません。
ISerializable でない状況では、ターゲット参照が解決されたら、リフレクションを使用して「保留中」のオブジェクト フィールドに簡単に再アクセスできます。ただし、ISerializable を実装するオブジェクトの場合、SerializationInfo を使用して新しいデータを挿入することはできません。
誰かが私を正しい方向に向けることができますか?
c# - ISerializable: 逆シリアル化で既存のオブジェクトを割り当てる
私たちのタスクは非常に単純です。各オブジェクト (IDItem) が一意の ID を持つオブジェクト グラフがあります。オブジェクト グラフは、クライアントとサーバー マシンの 2 回存在します。
ここで、いくつかのシリアライズ可能なコマンドをサーバーに渡します。このコマンドには、いくつかの IDItems がフィールドとして含まれています。IDItems は ISerializable インターフェイスを実装し、それらの ID のみを SerializationInfo に格納します。お気に入り:
問題は、デシリアライザーが作成するインスタンスに既存のオブジェクトをどのように割り当てることができるかということです。「this」識別子は読み取り専用であるため、ISerializable コンストラクターの次のようなものは明らかに機能しません。
では、既存のオブジェクトをデシリアライズされたオブジェクトに割り当てる方法はありますか?
敬具、タルム
.net - F#でISerializableを実装する方法
このスタブから始めたとしましょう:
問題は、仕様に「一般に、クラスが封印されていない場合、このコンストラクターは保護されるべきである」と書かれていることです。F#には保護されたキーワードがありません-では、どうすればこれを行うことができますか?
制約(APIレベルで既存のC#クラスと完全に一致する必要があるため):
- ISerializableを実装する必要があります
- コンストラクターを保護する必要があります
編集-興味深い追加情報F#仕様では、保護された関数をオーバーライドすると、結果の関数が保護されるとされています。これは正しくありません。アクセシビリティを指定しない場合、結果のオーバーライドは(契約を破る)何があっても公開されます。
c# - オブジェクト内のすべてのプロパティをバイナリ シリアル化するショートカットはありますか?
すべてのパブリック プロパティをシリアル化する必要があり、プロパティが単純なオブジェクト (数値または文字列または既に実装されているオブジェクト)がある場合、作成する必要がなく、コンストラクタを毎回引数として取るISerializable
簡単な方法はありますか?GetObjectData(SerializationInfo info, StreamingContext context)
SerializationInfo
リフレクションを使用して手動で実行できることは知っていますが、.NET Framework 内にそれを行うための魔法の方法はありますか?
したがって、正しい答えは次のとおりです。
ISerializable を実装しようとしないでください。これはカスタム シリアル化用です。代わりに、クラス宣言の直前に [Serializable] 属性を追加してください。
c# - クラスを構造化して IEquatable と ISerializable を実装する方法
しばらくの間、これについて頭を悩ませてきました
私が抱えている問題は、IEquatable の動作を追加しようとしているため、派生クラスは ILink の Intersect などのセット操作を使用できます。
現時点では...
そして、次のような一連の派生クラス
リストの交差を行うために、そのような抽象クラスを作成すると思いました...
ただし、派生型をから変更すると
に
SerializationException "Member 'Linkid' was not found." が発生します。これは、逆シリアル化を試みる最初のメンバーです
ところで:これはリモーティングであるため、カスタムのシリアル化が必要です-これらの動作を一緒に構成する方法はありますか?
どうもありがとう!
M
c# - コレクションをシリアライズする方法
タイプISetのプロパティを持つクラスがあります。そのクラスをシリアライズしたいのですが、ISet の使い方がわかりません。
同じものを作ろうとする人はいますか?私を助けてください。