実はシングルトンではありませんが、こんなに珍しいもののパターンがあるかどうかはわかりません。
たとえば、フレームワークにIWin32Window
は、コンソールアプリのコンソールを表す方法はありません。
public struct ConsoleWindow : IWin32Window
{
[DllImport("kernel32.dll")]
private static extern IntPtr GetConsoleWindow();
IntPtr IWin32Window.Handle
{
get { return GetConsoleWindow(); }
}
}
そして、あなたはそれをこのように使います。
MessageBox.Show(default(ConsoleWindow), "Hello, World!");
私は自分の利益のために賢すぎますか?これは「.netの方法」ですか?
静的な読み取り専用フィールド(何と呼ばれますか?)を使用することを検討しましたnew ConsoleWindow()
が、どちらも正しくないようでした。
(この場合、Handleは1回だけアクセスされるため、明らかにパフォーマンスは問題になりません。)