問題タブ [marshalling]
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.
windows - COMインターフェイスのマーシャリングを有効にするには何が必要ですか?
タイプライブラリのない32ビットATLCOMコンポーネントがあります。複数のインターフェースを実装する特定のクラスのクラスファクトリがあります。
これをインプロセスサーバーとして使用すると、すべてが正常に機能します。クライアント側がCoCreateInstance()を呼び出し、オブジェクトがインスタンス化され、QueryInterface()が要求されたインターフェイスへのポインターを取得します。しかし、コンポーネントをCOM +に入れると、クラスをインスタンス化できなくなります。CoCreateInstance()はE_NOINTERFACEを返すようになりました。
問題は、タイプライブラリがないためにCOM+がマーシャリングを実行できないことだと思います。マーシャリングの方法がわかりません。これを解決するためにタイプライブラリを生成して登録する必要がありますか、それとも他の方法がありますか?
windows - WCHAR配列が適切にマーシャリングされていません
次のメソッド定義(IDL表記)を持つCOMインターフェイスがあります。
TypelibマーシャリングはCOM+に使用され、タイプライブラリが登録され、COM +を介して呼び出された場合、インターフェイスの他のメソッドは正常に機能しますが、このメソッドは機能しません。
サーバー側は、WCHARの配列をにコピーし、awcBuffer
その長さをにコピーしpwcBuffer
ます。バッファオーバーランは発生しません。
クライアントがCOM+を介してこのメソッドを呼び出すと、バッファーの内容が失われます。具体的には、最初のワイド文字のみが保持されます。サーバーが「サンプル」ワイド文字列をコピーする場合、クライアントは「S」文字列のみを受け取ります。クライアントサイズの戻り値はS_OKであり、クライアントに返されるバッファの長さは、サーバーがコピーしたものとまったく同じです。
私はついにこの問題を回避するためにBSTRに切り替えましたが、有効な外観の構成全体が機能しない理由は非常に興味深いものです。
説明されている動作の考えられる理由は何ですか?
java - nullフィールドを使用したJAXBマーシャリング
これは非常に単純なリクエストですが、それを行う方法が見つかりませんでした。
私は基本的にJAXBで役割を設定しようとしています。これは、nullフィールドが検出されるたびに、出力で無視するのではなく、空の値に設定することを示しています。だからクラスのために:
日付フィールドがnullの場合にこれがXMLファイルにマーシャリングされていると、私の出力にはその要素が含まれていません。私がやりたいのは、出力にすべてのフィールドを含めることです。そして、それらがnullの場合は、それらを-空白と言います。したがって、出力は次のようになります。
ありがとう、
ジャルペッシュ。
c# - C++ 構造体を C# にマーシャリングする最も効率的な方法は何ですか?
それぞれ 1000 以上のレコードを含む大量のバイナリ ファイルの読み取りを開始しようとしています。新しいファイルが常に追加されるので、ディレクトリを監視し、新しいファイルを受信したときに処理する Windows サービスを作成しています。ファイルは c++ プログラムで作成されました。C# で構造体定義を再作成し、データを正常に読み取ることができましたが、この方法では最終的にアプリケーションが強制終了されるのではないかと心配しています。
実際には C++ アプリと通信していないため、GCHandle を使用する必要はないと思います。すべてがマネージ コードから行われていますが、別の方法を知りません。
.net - IJW: 管理されたプロキシ構造?
一部の C++ コードをマネージド .NET に移植する作業を行っています。一部の C++ コードをネイティブ形式で保持する必要があり、それに対して IJW アプローチを使用しようとしています。.NET コードに正しくマーシャリングされるように、アンマネージ構造体を宣言できることはわかっていますが、C++ コンパイラはそうしていないようです。
たとえば、私はこのコードを持っています(マネージド):
コンパイルされますが、リフレクターを使用して見ると、コードは次のようになります。
基本的に、MyStruct のフィールドは .NET から見えません。C++ コンパイラに生成するように指示する方法はありますか?
答えるときは、これを考慮してください。私は、.NET フレームワークから見えるマネージ クラスを作成する方法を知っています。私はこれを行うことに興味がありません。私が望むのは、C++ コンパイラがアンマネージ構造体を .NET が理解できる方法で宣言することです。
vb.net - VB.NET から COM オブジェクトへの配列のマーシャリング
COM メソッドを呼び出す VB6 プログラムがあり、2 つの配列をパラメーターとして渡し、応答として 2 つの配列が読み込まれることを期待しています。
コードは次のとおりです。ここで、ItemIDs と ItemClientHandles は入力配列パラメーターであり、MyItemServerHandles と Errors は COM オブジェクトによって取り込まれます。
ここで、VB.NET から同じメソッドを呼び出して、配列を定義するために次のようなことを試してみました。
エラーが発生するため(イタリア語から翻訳しようとしています)、動作しません。
オブジェクトを型 'System.Int32[*]' から型 'System.Int32[]' にキャストできません
配列を VB.NET マネージ コードからアンマネージ COM コードにマーシャリングする正しい方法は何ですか?
ありがとう
.net - .net 相互運用機能は COM のクロススレッド マーシャリングを行いますか、それとも CoMarshalInterThreadInterfaceInStream などを使用する必要がありますか?
スレッド間の COM インターフェイスをマーシャリングするために、CoMarshalInterThreadInterfaceInStream、CoGetInterfaceAndReleaseStream、または GlobalInterfaceTable などを使用する必要があるかどうかについて、決定的な答えを誰かに教えてもらえますか? このスレッドでは、interop が代わりにそれを行うと言う人もいれば、これらの呼び出しを使用する必要があると言う人もいます。それはどれですか?
具体的には、IE 内でブラウザー ヘルパー オブジェクトを開発しているときに、mshtml のさまざまな IHTMLxxx オブジェクトを使用しています。私は CoMarshalInterThreadInterfaceInStream のようなメソッドを使用したことがなく、これが引き起こした問題に気づいたこともありません。しかし、おそらくそれは、断続的な再現不可能な問題の原因である可能性があります...
ありがとう。
jquery - .NET サーバー コードと JavaScript クライアント コードの間で論理型を共有するにはどうすればよいでしょうか?
jquery を使用する ASP.NET MVC サーバー アプリとクライアント コードがあります。ajax を使用して、オブジェクトをクライアントからサーバーに転送したいと考えています。サーバー上では、基本的にそれらを検証してシリアル化するだけです。クライアントには、視覚的な表現を作成するための UI コードと、いくつかのオブジェクト プロパティを管理するためのその他のコードがあります。
私の質問は次のとおりです。これらのオブジェクトをマーシャリングするための最良の方法は何ですか? 私の現在のアイデアは、コントローラー アクションから JsonResult としてラップされたオブジェクトを返すことですが、クライアントでの作業が完了した後にオブジェクトを MVC の世界に戻す最良の方法がわかりません。JSON 文字列を作成し、それをコントローラ アクションの文字列引数として MVC に戻すこともできますが、JSON を手動で .NET 型にアンパックする必要があります。.NET 型へのより自動的なマッピング、またはここでエラーを防ぐのに役立つ他の「便利な」メカニズムを行う方法はありますか (その便利なメカニズムを作成する必要がある場合でも)。
これは ModelBinder のアイデアと非常によく似ているように思われます。おそらく、「通常の」フォーム ポストではなく、jquery を使用して JSON をサーバーにプッシュするという考えに思い至ったのかもしれません。何らかの方法で ModelBinder を使用して、クライアント提供の JSON を .NET 側の適切なモデル タイプに変換できますか?
c# - ソケット経由で C++ wchar_t から C# char へ
現在、ソケットを介して C# アプリケーションと通信する C++ アプリケーションを構築しています。私の C++ アプリは、ソケット経由で wchar_t* を送信します。
send の概要は次のとおりです。
反対側で受け取るものは次のとおりです(バイト配列にstream.readを実行し、UTF8Encoding.GetString()を使用してバイト配列を読み取り可能な文字列に変換します)
マーシャリングの問題ですか?あなたは何を言っていますか?拡張が 0 で、C# 側で Unicode 文字が表示されないのはなぜですか?
.net - 「マーシャリング」という用語の正確な定義
.NET の世界では、マーシャリングとは、境界を越えて、またはワイヤを介して転送するためのオブジェクト/データの準備を意味するだけですか、それとも、境界を越えて、またはワイヤを介して転送するための準備と転送を意味しますか?
そして、呼び出しをマーシャリングするとはどういう意味ですか。コンテキスト境界を越えた「転送」の呼び出しのパッケージ化だけを意味するのでしょうか、それとも呼び出しのパッケージ化と送信 (つまり、呼び出し) でしょうか?
ベタベタでごめんなさい…
クラリー