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. do you use extension methods intensively in your projects?

do you use extension methods intensively in your projects?

Scheduled Pinned Locked Moved The Lounge
question
42 Posts 27 Posters 41 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.
  • L Lost User

    I mostly use them for things that can't have methods defined on them directly, interfaces and enums.

    C Offline
    C Offline
    Cameron Oltmann
    wrote on last edited by
    #33

    For some reason I never thought of writing them for enums, though I use them for interfaces all the time. Can you give an example where an extension method for an enum would be useful? Can't think of any myself off hand.

    L 1 Reply Last reply
    0
    • F Fabio Franco

      Why not implement in the object themselves and keep them contained and organized? Is there anything preventing the code to be where it belongs?

      To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia

      C Offline
      C Offline
      Chris Maunder
      wrote on last edited by
      #34

      Separation of concerns, mostly.

      cheers Chris Maunder

      1 Reply Last reply
      0
      • S Southmountain

        just curious. recently I start to use extension methods in my projects.

        diligent hands rule....

        H Offline
        H Offline
        Harley L Pebley
        wrote on last edited by
        #35

        The core products for the company I work for are mainly COM based libraries. I've written .Net libraries of extension methods that help hide the COM ugliness and provide a more .Net friendly interface.

        1 Reply Last reply
        0
        • S Southmountain

          just curious. recently I start to use extension methods in my projects.

          diligent hands rule....

          M Offline
          M Offline
          Matthew Dennis
          wrote on last edited by
          #36

          I have a .NET Core based Redis Client that I've been working on for a while that heavily uses extension methods. The 'client' just knows how to send a command and receive a response. All the Redis commands are implemented as extension methods on the 'client'. So as static class for the Key Commands, another for the Hash Commands, ... in Redis Client

          /// <summary>
          /// Sends a command and returns the response string.
          /// </summary>
          /// <param name="command">The Command.</param>
          /// <param name="parameters">The parameters.</param>
          /// <returns>The response.</returns>
          public Task SendAsync(string command, params object[] parameters)
          {
          return SendAsync(command, (IEnumerable<object>)parameters);
          }

          /// <summary>
          /// Sends a command and returns the response string.
          /// </summary>
          /// <param name="command">The Command.</param>
          /// <param name="parameters">The parameters.</param>
          /// <returns>The awaitable Task.</returns>
          public async Task SendAsync(string command, IEnumerable<object> parameters = null)
          {
          await EnsureConnected().ConfigureAwait(false);
          await _commandWriter.WriteRedisCommandAsync(command, parameters).ConfigureAwait(false);
          }

          in HashCommands

          public static Task SendHGetAsync(this RedisClient client, string key, string field)
          {
          if (string.IsNullOrWhiteSpace(key))
          throw new ArgumentNullException(nameof(key));

          if (string.IsNullOrWhiteSpace(field))
              throw new ArgumentNullException(nameof(field));
          
          return client.SendAsync("HGet", key, field);
          

          }

          Each commands are small and trivial. The core client has no tricky dependencies on the commands. Classic Open for Extension but Closed for Modification. What has been delaying me is the number of tests to test all the commands, plus an update to the latest .NET Core bits. Another great thing about Extension Methods is the ability to extend 3rd party libraries.

          "Time flies like an arrow. Fruit flies like a banana."

          1 Reply Last reply
          0
          • C Cameron Oltmann

            For some reason I never thought of writing them for enums, though I use them for interfaces all the time. Can you give an example where an extension method for an enum would be useful? Can't think of any myself off hand.

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #37

            Well it depends on what that enum is about, it's not always useful. I've used it for example to give an `enum ConditionCode { etc` the fake-methods `Invert` and `SwapOperands`.

            C 1 Reply Last reply
            0
            • S Southmountain

              just curious. recently I start to use extension methods in my projects.

              diligent hands rule....

              J Offline
              J Offline
              Jim Balter
              wrote on last edited by
              #38

              I used them extensively.

              1 Reply Last reply
              0
              • L Lost User

                Well it depends on what that enum is about, it's not always useful. I've used it for example to give an `enum ConditionCode { etc` the fake-methods `Invert` and `SwapOperands`.

                C Offline
                C Offline
                Cameron Oltmann
                wrote on last edited by
                #39

                Ah gotcha. Thanks!

                1 Reply Last reply
                0
                • S Southmountain

                  just curious. recently I start to use extension methods in my projects.

                  diligent hands rule....

                  R Offline
                  R Offline
                  Robert g Blair
                  wrote on last edited by
                  #40

                  What is extensively? I have a small set of extension methods, but I use them a lot. On sealed classes. Examples: DBInt("columnName") - returns int value of column in a datarow, and cleans up DBNull issues. HiddenCreditCard(CC Number String) - returns CC Number showing only first and last four digits, with asters in between.

                  1 Reply Last reply
                  0
                  • M Midi_Mick

                    Very much so! Done properly, they make the code so much more compact and readable.

                    Cheers, Mick ------------------------------------------------ It doesn't matter how often or hard you fall on your arse, eventually you'll roll over and land on your feet.

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

                    Not only does proper use of extension methods do this it also "cleans" up the API. For instance, Visual Basic has a StrReverse(string) method, but the underlying dotNet framework's Reverse() extension method for System.String doesn't return a string. It returns an array of characters. I'll add extension methods for this type of situation.

                    1 Reply Last reply
                    0
                    • S Southmountain

                      just curious. recently I start to use extension methods in my projects.

                      diligent hands rule....

                      M Offline
                      M Offline
                      mbb01
                      wrote on last edited by
                      #42

                      I use extension methods somewhat. I'm slowly building a suite of useful methods. There is also the site extensionmethod.net too. I keep the extension methods in a core library, but the methods are declared in the namespace of the class I'm targeting. That way, when I reference the core library all the extension methods are available without superfluous using statements. Be careful, there is an ongoing debate on the internets about whether they're a good thing or bad thing. I would say, use sparingly, and note that an extension method is probably sign-posting a limitation in your design. As well as other suggestions, I've used them to clean up a messy code base I've inherited. In this code base there were a number of inappropriate methods attached to a static globals class. Side-stepping the whole issue of a statics globals class, the methods attached to it were moved onto extension methods. Not a perfect solution, but migrating to extension methods helped me nudge the legacy code in the right direction.

                      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