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. Other Discussions
  3. The Weird and The Wonderful
  4. Read-only properties

Read-only properties

Scheduled Pinned Locked Moved The Weird and The Wonderful
question
42 Posts 15 Posters 0 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.
  • P Offline
    P Offline
    PIEBALDconsult
    wrote on last edited by
    #1

    I just found a bunch of properties made read-only like this (I think they're from a template):

    set
    {
    // Do nothing
    }

    Huh? If you want it to be read-only, make it read-only! :mad:

    R G D B M 7 Replies Last reply
    0
    • P PIEBALDconsult

      I just found a bunch of properties made read-only like this (I think they're from a template):

      set
      {
      // Do nothing
      }

      Huh? If you want it to be read-only, make it read-only! :mad:

      R Offline
      R Offline
      Robert Royall
      wrote on last edited by
      #2

      That's not so much read-only as it is a "la la la I'm not listening la la la" property.

      Please don't bother me... I'm hacking right now. Don't look at me like that - doesn't anybody remember what "hacking" really means? :sigh:

      1 Reply Last reply
      0
      • P PIEBALDconsult

        I just found a bunch of properties made read-only like this (I think they're from a template):

        set
        {
        // Do nothing
        }

        Huh? If you want it to be read-only, make it read-only! :mad:

        G Offline
        G Offline
        GibbleCH
        wrote on last edited by
        #3

        Actually, I have found that sometimes you need to do that. I can't remember the exact reasoning, but a couple weeks ago I was trying to pass a readonly property to a .NET function of some sort and it would throw an error, despite, the property not being written too...the "fix" was to have an empty set...and I believe I marked it as deprecated so it threw a compile error if someone tried to write to it.

        P 1 Reply Last reply
        0
        • G GibbleCH

          Actually, I have found that sometimes you need to do that. I can't remember the exact reasoning, but a couple weeks ago I was trying to pass a readonly property to a .NET function of some sort and it would throw an error, despite, the property not being written too...the "fix" was to have an empty set...and I believe I marked it as deprecated so it threw a compile error if someone tried to write to it.

          P Offline
          P Offline
          PIEBALDconsult
          wrote on last edited by
          #4

          The ObsoleteAttribute can't be applied to a property accessor. :( The class in question is implementing an abstract class, which specifies both get and set. I should have checked that before I posted this, but still... the set should throw a NotImplementedException or something. Failing that, the accessor should be functional.

          1 Reply Last reply
          0
          • P PIEBALDconsult

            I just found a bunch of properties made read-only like this (I think they're from a template):

            set
            {
            // Do nothing
            }

            Huh? If you want it to be read-only, make it read-only! :mad:

            D Offline
            D Offline
            darkelv
            wrote on last edited by
            #5

            Well, if the guy who owns the interface doesn't want to remove the set from the interface, I guess you are pretty much stucked with that.

            P 1 Reply Last reply
            0
            • D darkelv

              Well, if the guy who owns the interface doesn't want to remove the set from the interface, I guess you are pretty much stucked with that.

              P Offline
              P Offline
              PIEBALDconsult
              wrote on last edited by
              #6

              Yes, but silently ignoring the value is poor style.

              P 1 Reply Last reply
              0
              • P PIEBALDconsult

                I just found a bunch of properties made read-only like this (I think they're from a template):

                set
                {
                // Do nothing
                }

                Huh? If you want it to be read-only, make it read-only! :mad:

                B Offline
                B Offline
                BadKarma
                wrote on last edited by
                #7

                Still, its better then the following

                private int m_iData;
                public int Data
                {
                 get 
                 {
                  return m_iData;
                 }
                 set
                 {
                   // store the old data
                   //
                   int iOldData = m_iData;
                
                   m_iData = value;
                
                   // reset to old data because its read-only
                   //
                   m_iData = iOldData
                 }
                }
                

                codito ergo sum

                CPalliniC K F 3 Replies Last reply
                0
                • P PIEBALDconsult

                  I just found a bunch of properties made read-only like this (I think they're from a template):

                  set
                  {
                  // Do nothing
                  }

                  Huh? If you want it to be read-only, make it read-only! :mad:

                  M Offline
                  M Offline
                  mav northwind
                  wrote on last edited by
                  #8

                  You guys are so negative! Try to see the good in this approach. Using this approach one could perform consistency checks before not saving the value... :laugh:

                  Regards, mav -- Black holes are the places where God divided by 0...

                  G P 2 Replies Last reply
                  0
                  • B BadKarma

                    Still, its better then the following

                    private int m_iData;
                    public int Data
                    {
                     get 
                     {
                      return m_iData;
                     }
                     set
                     {
                       // store the old data
                       //
                       int iOldData = m_iData;
                    
                       m_iData = value;
                    
                       // reset to old data because its read-only
                       //
                       m_iData = iOldData
                     }
                    }
                    

                    codito ergo sum

                    CPalliniC Offline
                    CPalliniC Offline
                    CPallini
                    wrote on last edited by
                    #9

                    :laugh:

                    If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                    This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke

                    In testa che avete, signor di Ceprano?

                    1 Reply Last reply
                    0
                    • P PIEBALDconsult

                      Yes, but silently ignoring the value is poor style.

                      P Offline
                      P Offline
                      Paul Conrad
                      wrote on last edited by
                      #10

                      PIEBALDconsult wrote:

                      silently ignoring the value is poor style.

                      Yes, it is. I can only imagine the headache of trying to track it down on a Friday afternoon.

                      "The clue train passed his station without stopping." - John Simmons / outlaw programmer

                      D 1 Reply Last reply
                      0
                      • M mav northwind

                        You guys are so negative! Try to see the good in this approach. Using this approach one could perform consistency checks before not saving the value... :laugh:

                        Regards, mav -- Black holes are the places where God divided by 0...

                        G Offline
                        G Offline
                        GibbleCH
                        wrote on last edited by
                        #11

                        Alternately, if at some point in time, the property was to become (or maybe was in the past) not 'readonly', applications relying on the dll wouldn't necessarily need to be recompiled to use the new dll, since the definition wouldn't change...on that item.

                        L 1 Reply Last reply
                        0
                        • B BadKarma

                          Still, its better then the following

                          private int m_iData;
                          public int Data
                          {
                           get 
                           {
                            return m_iData;
                           }
                           set
                           {
                             // store the old data
                             //
                             int iOldData = m_iData;
                          
                             m_iData = value;
                          
                             // reset to old data because its read-only
                             //
                             m_iData = iOldData
                           }
                          }
                          

                          codito ergo sum

                          K Offline
                          K Offline
                          Krirk
                          wrote on last edited by
                          #12

                          Excellent code.A guy who wrote this code is genius. :omg: :wtf:X|

                          My blog

                          1 Reply Last reply
                          0
                          • G GibbleCH

                            Alternately, if at some point in time, the property was to become (or maybe was in the past) not 'readonly', applications relying on the dll wouldn't necessarily need to be recompiled to use the new dll, since the definition wouldn't change...on that item.

                            L Offline
                            L Offline
                            Lutoslaw
                            wrote on last edited by
                            #13

                            Yeach. And if some library user tried to write to a property and didn't notice that it took no effect, then after an upgrade his code could break because the old do-nothing setter would suddenly change something. :doh:

                            Greetings - Gajatko Portable.NET is part of DotGNU, a project to build a complete Free Software replacement for .NET - a system that truly belongs to the developers.

                            1 Reply Last reply
                            0
                            • P PIEBALDconsult

                              I just found a bunch of properties made read-only like this (I think they're from a template):

                              set
                              {
                              // Do nothing
                              }

                              Huh? If you want it to be read-only, make it read-only! :mad:

                              L Offline
                              L Offline
                              leppie
                              wrote on last edited by
                              #14

                              You need this scenario with XML deserialization.

                              xacc.ide - now with IronScheme support
                              IronScheme - 1.0 alpha 2 out now

                              P G 2 Replies Last reply
                              0
                              • L leppie

                                You need this scenario with XML deserialization.

                                xacc.ide - now with IronScheme support
                                IronScheme - 1.0 alpha 2 out now

                                P Offline
                                P Offline
                                PIEBALDconsult
                                wrote on last edited by
                                #15

                                Good point, but... Not if it's done right. I haven't done much serialization (XML or otherwise), but as I recall the class specifies which members get serialized and deserialized, so this shouldn't be a problem. You might have to override the base class' deserializer. Or I may just be showing my ignorance. :-O

                                L 1 Reply Last reply
                                0
                                • P Paul Conrad

                                  PIEBALDconsult wrote:

                                  silently ignoring the value is poor style.

                                  Yes, it is. I can only imagine the headache of trying to track it down on a Friday afternoon.

                                  "The clue train passed his station without stopping." - John Simmons / outlaw programmer

                                  D Offline
                                  D Offline
                                  Derek Bartram
                                  wrote on last edited by
                                  #16

                                  Well, personally I say get rid of properties anyway! There is simply no point in them other than making the language more bloated and less clear.... In the good old days.... .name = public class variable, didn't run any code, just gave access.... now will it run code, or won't it!?!?!??!?

                                  P 1 Reply Last reply
                                  0
                                  • D Derek Bartram

                                    Well, personally I say get rid of properties anyway! There is simply no point in them other than making the language more bloated and less clear.... In the good old days.... .name = public class variable, didn't run any code, just gave access.... now will it run code, or won't it!?!?!??!?

                                    P Offline
                                    P Offline
                                    PIEBALDconsult
                                    wrote on last edited by
                                    #17

                                    Sure they can be abused, but I wouldn't get rid of them just because of that.

                                    D 1 Reply Last reply
                                    0
                                    • P PIEBALDconsult

                                      Sure they can be abused, but I wouldn't get rid of them just because of that.

                                      D Offline
                                      D Offline
                                      Derek Bartram
                                      wrote on last edited by
                                      #18

                                      Maybe, but it just seams like a lazy way of coding that means it's harder to tell what code is actually doing. Personally I feel it makes using other people's code harder (particularily badly written code where the property name is misleading)

                                      G 1 Reply Last reply
                                      0
                                      • D Derek Bartram

                                        Maybe, but it just seams like a lazy way of coding that means it's harder to tell what code is actually doing. Personally I feel it makes using other people's code harder (particularily badly written code where the property name is misleading)

                                        G Offline
                                        G Offline
                                        GibbleCH
                                        wrote on last edited by
                                        #19

                                        But properly written properties do data validation, and will modify any other values that need to be modified when that property changes.

                                        D 1 Reply Last reply
                                        0
                                        • L leppie

                                          You need this scenario with XML deserialization.

                                          xacc.ide - now with IronScheme support
                                          IronScheme - 1.0 alpha 2 out now

                                          G Offline
                                          G Offline
                                          GibbleCH
                                          wrote on last edited by
                                          #20

                                          THAT'S IT! That's why I had to do something similar to this coding horror.

                                          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