0

呼び出されたメソッド内で呼び出しオブジェクトを取得するにはどうすればよいですか?

次のように作成されるカスタム MessageBox を作成する必要がありました。

public static class MsgBox
{
    public static MessageBoxResult Show(string messageBoxText)
    {
        var msg = new CustomMessageBoxWindow(messageBoxText);
        msg.ShowDialog();

        return msg.Result;
    }
}

この MessageBox の所有者を指定する必要があります。これを行うには、開発者に呼び出しオブジェクトを渡すように強制します。たとえば、

public static MessageBoxResult Show(string messageBoxText, Window owner)

所有者を次のように設定します

msg.Owner = owner;

しかし、これは多くの場所で多くの呼び出しを変更しなければならないことを意味します。実行可能ですが、理想的ではありません。理想的には、Show() メソッド内から MessageBox を呼び出したクラスを見つけて、新しいパラメーターを渡すことなく設定できるようにすることができます。

public static MessageBoxResult Show(string messageBoxText)
{
    var msg = new CustomMessageBoxWindow(messageBoxText);
    msg.ShowDialog();

    var owner = // somehow get the calling Window;
    msg.Owner = owner;

    return msg.Result;
}
4

2 に答える 2