Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Pointless .Net Feature of the Day

Pointless .Net Feature of the Day

Scheduled Pinned Locked Moved The Lounge
csharp
45 Posts 24 Posters 87 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • realJSOPR realJSOP

    Partial methods. I'll let you do your own research, but I cannot identify a single case where the use of a partial method would be beneficial, desired, or warranted.

    ".45 ACP - because shooting twice is just silly" - JSOP, 2010
    -----
    You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
    -----
    When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013

    J Offline
    J Offline
    johannesnestler
    wrote on last edited by
    #41

    No Research needed. It's for extending generated Code that may will be re-generated later (so you can not change it because your changes would be overriden). E.g. I use it to extend EF generated Contexts. It's a very nice feature and .NET has many not everyone will use, so don't. But if you do Frameworks or template-code or big systems (or WindowsForms UI) it's very handy…

    O 1 Reply Last reply
    0
    • G GKP1992

      Where is YAGNI when you need it. Google trends[^] results sort of agree with your feelings, as do I.

      M Offline
      M Offline
      M chael Luna
      wrote on last edited by
      #42

      Definitely YAGNI. Will definitely be asked about it in a job interview.

      1 Reply Last reply
      0
      • M Marc Clifton

        The cool thing in the code below is that if you don't define LOGGING, not only does the partial method go away, but any calls to the method are also removed.

        #define LOGGING

        using System;

        namespace PartialMethodTest
        {
        partial class Foo
        {
        partial void Log(string msg);

            public void DoSomething()
            {
                Log("Fizbin");
            }
        }
        

        #if LOGGING
        partial class Foo
        {
        partial void Log(string msg)
        {
        Console.WriteLine(msg);
        }
        }
        #endif

        class Program
        {
            static void Main(string\[\] args)
            {
                new Foo().DoSomething();
            }
        }
        

        }

        Latest Article - A Concise Overview of Threads Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

        A Offline
        A Offline
        agolddog
        wrote on last edited by
        #43

        C'mon Marc, that's not a valid example. Everybody of our age range knows fizzbin has two z's. ;)

        1 Reply Last reply
        0
        • J johannesnestler

          No Research needed. It's for extending generated Code that may will be re-generated later (so you can not change it because your changes would be overriden). E.g. I use it to extend EF generated Contexts. It's a very nice feature and .NET has many not everyone will use, so don't. But if you do Frameworks or template-code or big systems (or WindowsForms UI) it's very handy…

          O Offline
          O Offline
          obermd
          wrote on last edited by
          #44

          Finally, a good answer to what Partial Methods are good for.

          1 Reply Last reply
          0
          • OriginalGriffO OriginalGriff

            It's for use in a partial class, so you could declare the partial method in the designer code for a WinForms app for example, and implement it in the user defined code for the same class. The difference is that the method can be called from the designer code because it will compile cleanly. This is still the case if the implementation of the partial method is never provided: the compiler will remove the partial method and the call to it if the concrete version is not written, and you still won't get a compiler error. Think of it as a sort-of optional private abstract method and you're about there.

            Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

            J Offline
            J Offline
            Jalapeno Bob
            wrote on last edited by
            #45

            I use it frequently. I find it simpler to use than Interface.

            __________________ Lord, grant me the serenity to accept that there are some things I just can’t keep up with, the determination to keep up with the things I must keep up with, and the wisdom to find a good RSS feed from someone who keeps up with what I’d like to, but just don’t have the damn bandwidth to handle right now. © 2009, Rex Hammock

            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • World
            • Users
            • Groups