参照していない別プロジェクトのフォームを表示する




1年以上前に更新された記事です。
情報が古い可能性がありますので、注意してください。

はじめに

別プロジェクトのフォームを表示したいけれど、その表示したいフォームが呼び出し元のリソースを使用している場合、循環参照になるため設定できません。

この場合、リフレクションを使えば別プロジェクトのexeをdllみたいに読み込んで呼び出せるようになる。

コード

呼び出す側(親)のプロジェクト:PJ01

リフレクションを使えば参照せずに、PJ02のフォームを表示できます。

今回使用してないけど、InvokeMember の一番最後の引数は、呼び出すメソッドの引数。
配列で渡してあげれば、引数付きコンストラクタ等も呼び出せる。

呼び出される側(子)のプロジェクト:PJ02

ここでは、PJ01の変数にアクセスしたいので参照しています。
でも、PJ01はPJ02を参照していないので何の問題もありません。

まとめ

循環参照を避けて、別プロジェクトのフォームを開けるようになりました。
ですが、これ使わなくちゃいけなくなった場合、可能であれば設計を見直した方が良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です