Partial Classes in C#

后端 未结 20 2965
时光说笑
时光说笑 2021-02-19 07:59

Are there are good uses of Partial Classes outside the webforms/winforms generated code scenarios? Or is this feature basically to support that?

20条回答
  •  孤城傲影
    2021-02-19 08:36

    Another possible use for partial classes would be to take advantage of partial methods to make methods selectively disappear using conditional compilation - this would be great for debug-mode diagnostic code or specialized unit testing scenarios.

    You can declare a partial method kind of like an abstract method, then in the other partial class, when you type the keyword "partial" you can take advantage of the Intellisense to create the implementation of that method.

    If you surround one part with conditional build statements, then you can easily cut off the debug-only or testing code. In the example below, in DEBUG mode, the LogSomethingDebugOnly method is called, but in the release build, it's like the method doesn't exist at all - a good way to keep diagnostic code away from the production code without a bunch of branching or multiple conditional compilation blocks.

    // Main Part
    public partial class Class1
    {
        private partial void LogSomethingDebugOnly();
    
        public void SomeMethod()
        {
            LogSomethingDebugOnly();
            // do the real work
        }
    }
    
    // Debug Part - probably in a different file
    public partial class Class1
    {
    
        #if DEBUG
    
        private partial void LogSomethingDebugOnly()
        {
            // Do the logging or diagnostic work
        }
    
        #endif
    }
    

提交回复
热议问题