2009-07-15 8 views
1

イベントバッキングフィールドが保護されていると宣言してはならない理由はありますか?たとえば、すべてのイベントに対してOnSomeEventメソッドを作成しないようにするためです。このような例:もちろんC#:イベントバッキングフィールドが保護されていると宣言してはならない理由は何ですか?

protected SomeEventHandler someEvent; 

    readonly object someEventLock = new object(); 

    public event SomeEventHandler SomeEvent 
    { 
     add 
     { 
      lock (someEventLock) 
       someEvent += value; 
     } 
     remove 
     { 
      lock (someEventLock) 
       someEvent -= value; 
     } 
    } 

降順クラスはイベントを上げたときにロックすることを忘れないように持っているだろう、などが、とにかく。

これをしない理由は何ですか?

答えて

6

カプセル化。これは、サブクラスがロックすることを覚えておく必要があることについて、つまりロックフィールドを公開することなどを意味します。これは、クラスによってカプセル化される実装の詳細です。

OnSomeEventメソッドを作成すると、サブクラスはイベントをどのように処理しているかの詳細を知る必要はなく、単にイベントを発生させる方法があります。これにより、コードの重複が削減されます。イベントを呼び起こす方法があります。

私は、彼らが(string.Emptyのように)不変タイプのパブリック静的読み取り専用フィールドでない限り、プライベートであることをすべての私のフィールドを好む - そしてその後も、私はプロパティを好むを傾向

+0

私はあなたのところを見ます。それは悪い考えです。 =) – Svish

関連する問題