OverаэтотвопросестьответынаStack Overflowнарусском:Перегрузкаиндексаторастатическогокласса C#で静的インデクサーが許可されないのはなぜですか?それらが許可されるべきではなく、さらにそれらが非常に有用である理由は私にはわかりません。 例えば: public static class ConfigurationManager { public object this[string name] { get => ConfigurationManager.getProperty(name); set => ConfigurationManager.editProperty(name, value); } /// <summary> /// This will write the value to the property. Will overwrite if the property is already there /// </summary> /// <param name="name">Name of the property</param> /// …
サードパーティによる使用を目的としたカスタムWPFユーザーコントロールを作成しました。私のコントロールには使い捨てのプライベートメンバーがあり、ウィンドウ/アプリケーションを閉じたときに、そのdisposeメソッドが常に呼び出されるようにしたいと思います。ただし、UserControlは使い捨てではありません。IDisposableインターフェイスを実装してUnloadedイベントをサブスクライブしてみましたが、ホストアプリケーションが閉じても呼び出されません。可能であれば、特定のDisposeメソッドを呼び出すことを覚えているコントロールのコンシューマーに依存したくありません。 public partial class MyWpfControl : UserControl { SomeDisposableObject x; // where does this code go? void Somewhere() { if (x != null) { x.Dispose(); x = null; } } } これまでに見つけた唯一の解決策は、ディスパッチャーのShutdownStartedイベントをサブスクライブすることです。これは合理的なアプローチですか? this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;