1

シングルトンパターンを使用するクラスがあります。クラスは次のようになります

public class MessageAccess
{
    private static MessageAccess instance;
    public static MessageAccess Instance
    {
        get { return instance ?? (instance = new MessageAccess()); }
    }

    private MessageAccess()
    {

    }

    public void Initialize(string data)
    {
        //...
        isInitialized = true;
    }

    private bool isInitialized;

    public void ReadData1()
    {
        // This Method can always be called
    }

    public void ReadData2()
    {
        // This Method can only be called, if Initialize was called. Otherwise an exception will be thrown
    }
}       

Initializeメソッドが呼び出されない場合、コンパイラ警告を生成することは可能ですか?

4

2 に答える 2

2

私はあなたの見解を理解していますが、そのような警告はあなたが思っているほど便利ではないと思います. 残念ながら、.NET フレームワークは、明確に定義されたいくつかの理由により、この種の警告に対応していません (次のリンクを参照してください: http://blogs.msdn.com/b/csharpfaq/archive/2004/03/ 19/why-doesn-tc-warn-about-unused-methods.aspx )。

この機能がないことはチャンスを逃したと考える人もいるかもしれませんが、そうではありません。あなたのクラスMessageAccessは公開されており、(たとえば) dll にコンパイルされます。dll のコンパイル中にこの警告が表示されたとしても、その dll のInitializeメソッド (これも公開されています) を使用して外部コードをコンパイルしているときに警告が表示されないようにする必要があります。基本的に、他のコードがそのメソッドを使用しないことを保証することはできません。これは、この警告が表示されないより良い理由の 1 つです。

于 2013-04-25T09:42:18.103 に答える