- PR -

アセンブリでMDI子フォームを生成

投稿者投稿内容
エス
会議室デビュー日: 2007/06/29
投稿数: 5
投稿日時: 2007-07-02 16:41
じゃんぬねっとさん、masaさん、有難う御座います。


引用:

じゃんぬねっとさんの書き込み (2007-07-02 15:27) より:

System.Windows.Forms.Form クラスの継承階層がどのようになっているのかご存知でしょうか?




FormクラスはMarshalByRefObjectクラスを継承していたのですね。
引き続き.NET Remotingを調べてみたいと思います。


引用:

masaさんの書き込み (2007-07-02 16:00) より:

p.s. 解決したらぜひ教えてください。




がんばってみます。解決できましたら報告させて頂きます。
有難う御座いました。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2007-07-04 18:54
回答ではありません。

私も調査をしてみました。

別アセンブリで定義されているコントロールを AppDomain 経由で取得してフォームに配置しようとすると、
"フィールド parent が見つかりませんでした" となります。以前はここで検証をやめていました。

ネットを調べてみたところ、
RealProxy を使用してリモートオブジェクトのカスタマイズを行っているサンプルをいくつか見つけました。
やりたいこととまったく同じというわけではありませんが、考え方を利用できないかと思いました。

その結果、parent を取得しようとしているメッセージを横取りし、
リフレクションを使って Parent を返してあげることで上の例外は回避できました。
しかしながら、"PropertyStore はシリアル化可能として設定されていません" という別の例外が発生しました。
前に処理は進んだと思いますが、正しい方向へ進んでいるのかは分かりません。


RealProxy を使うことでひょっとしたら・・・という感触はつかめましたが、
コントロールの内部実装を知らない限りはなかなか難しいのかなと感じます。
エス
会議室デビュー日: 2007/06/29
投稿数: 5
投稿日時: 2007-07-05 07:24
masaさん、有難う御座います。

開発の合間に調査をしていたのですが、なかなか進展せずにいました。
RealProxy、初めて耳にします。引き続き調査してみます。

masaさん、感謝致します。
また何かありました際は、宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)