3
public class EventBus<T>
{
    [NotNull] // annotation not valid on this declaration type
    private static event Action<T> Events;

    static EventBus()
    {
        // we always have a do-nothing event handler so we don't have to worry about null checks and race conditions
        Events += T => { };
    }

コメントに見られるように、どこでもイベントの null チェックを処理する必要はありません。これは、構築時に呼び出されないデフォルトの何もしないイベントを割り当てることで解決されます。Resharper がこれを自動的に把握できないのは当然のことなので、NotNull アノテーションを付けたいと思いました。残念ながら、NotNull はイベントに適用できないように見えますが、Resharper は、イベントを呼び出すたびに「'System.NullReferenceException' の可能性」について警告することを躊躇しません。

resharper がエラーに気付く場合は、アノテーションで回避できるはずです。

4

1 に答える 1