好吧,它并不是真正的单例,但我不知道是否有这种稀有事物的模式。
例如,框架中没有办法获得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 只被访问一次。)