DOBON.NET DOBON.NETプログラミング掲示板過去ログ

リフレクションで、新規ではなく既存のインスタンスを取得したい

環境/言語:[Win7(x64)/VisualStudio2010/C#/.NET Framework 4 CP]
分類:[.NET]

お久しぶりです、お世話になっております。

今回は、自分が作っているのはプラグインDLLで、取得したいのは
親となるアプリ(WPF)のWindowです。

親アプリをAssembly.GetEntryAssemblyにより取得し、
目的のメインウィンドウとなるWindow型のTypeを見つけ出すまでは
出来ているのですが、そこから既存のインスタンスを取得する部分で
行き詰まっています。

CreateInstanceしてしまっては起動済みの親アプリとは別物になって
しまうため、どうしたものかと悩んでいます。

何卒ご教示お願いいたします。

# MeberwiseCloneメソッドで同インスタンスなObject取れるじゃん!と思ったら
 MethodInfo.Invokeは結局インスタンスが必要なわけで… orz
普通はプラグインインターフェイスの引数に渡すべきものだと思います。
(それがWindowインスタンスで良いのかどうかはさておき)
一応System.Windows.ApplicationクラスのMainWindowプロパティやWindowsプロパティで開いているウィンドウを取得することは可能ですが。
2012/07/24(Tue) 11:02:03 編集(投稿者)

■No30759に返信(Hongliangさんの記事)
> 普通はプラグインインターフェイスの引数に渡すべきものだと思います。
> (それがWindowインスタンスで良いのかどうかはさておき)
> 一応System.Windows.ApplicationクラスのMainWindowプロパティやWindowsプロパティで開いているウィンドウを取得することは可能ですが。

返信ありがとうございます。
親アプリは他者製で、プラグインに親インスタンスが渡されるような設計にはなっていませんでした。

Application.MainWindowで正常に取得できました!とりあえずはこの方法で行こうと思います

> (それがWindowインスタンスで良いのかどうかはさておき)
やりたいことは、親アプリの画面が最小化されたらゴニョゴニョする…といったようなもので、
本当は親アプリのウィンドウのイベントを感知できるようなインタフェースがあればよかったんですが
残念ながら親アプリさんはそういう設計になっていなかったので、Windowインスタンスを
無理やりとってやろうかという感じでした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板