1

I have a class, where I use the singleton-pattern. The class looks like

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
    }
}       

Is it possible to generate a compiler-warning if the Method Initialize is never called

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方法(也是公共的)编译某些外部代码时出现。您基本上不能保证没有其他代码会使用该方法,这是不出现此警告的更好理由之一。

于 2013-04-25T09:42:18.103 回答
1

如果该类不从程序集外部使用,您可以将其设为internal. 在这种情况下,如果未调用该方法,代码分析将生成警告“避免未调用的私有代码”。

于 2013-04-25T09:15:38.420 回答