Click here to Skip to main content
15,922,533 members
Home / Discussions / C#
   

C#

 
GeneralRe: Simple File Counting Pin
Giorgi Dalakishvili19-Dec-07 8:24
mentorGiorgi Dalakishvili19-Dec-07 8:24 
GeneralRe: Simple File Counting Pin
Jimmanuel19-Dec-07 8:24
Jimmanuel19-Dec-07 8:24 
GeneralRe: Simple File Counting Pin
ffowler19-Dec-07 8:26
ffowler19-Dec-07 8:26 
GeneralListView Pin
half-life19-Dec-07 7:30
half-life19-Dec-07 7:30 
GeneralRe: ListView Pin
mav.northwind19-Dec-07 9:13
mav.northwind19-Dec-07 9:13 
NewsSwitching internet connections Pin
new2pgrmg19-Dec-07 6:54
new2pgrmg19-Dec-07 6:54 
GeneralWebPart only renders ok calling CreateChildControl manually Pin
harleydk19-Dec-07 6:33
harleydk19-Dec-07 6:33 
GeneralIs I can fire events using delegated method using "events and delegates" Pin
nallanch_srinivas19-Dec-07 6:24
nallanch_srinivas19-Dec-07 6:24 
GeneralRe: Is I can fire events using delegated method using "events and delegates" Pin
Nathan Holt at EMOM19-Dec-07 11:47
Nathan Holt at EMOM19-Dec-07 11:47 
Generalbuild a C# project in Release & Debug (same out put directory) Pin
kaminem19-Dec-07 5:30
kaminem19-Dec-07 5:30 
GeneralRe: build a C# project in Release & Debug (same out put directory) Pin
darkelv19-Dec-07 6:11
darkelv19-Dec-07 6:11 
Generalhyperlink on a desktop app. Pin
s3rro19-Dec-07 5:02
s3rro19-Dec-07 5:02 
GeneralRe: hyperlink on a desktop app. Pin
DaveyM6919-Dec-07 5:23
professionalDaveyM6919-Dec-07 5:23 
GeneralRe: hyperlink on a desktop app. Pin
Anthony Mushrow19-Dec-07 7:31
professionalAnthony Mushrow19-Dec-07 7:31 
GeneralHandling keystrokes Pin
jesarg19-Dec-07 4:44
jesarg19-Dec-07 4:44 
GeneralRe: Handling keystrokes Pin
Luc Pattyn19-Dec-07 5:15
sitebuilderLuc Pattyn19-Dec-07 5:15 
GeneralRe: Handling keystrokes Pin
jesarg19-Dec-07 10:12
jesarg19-Dec-07 10:12 
GeneralPropertyGrid Pin
netJP12L19-Dec-07 4:27
netJP12L19-Dec-07 4:27 
GeneralRe: PropertyGrid Pin
TJoe19-Dec-07 5:30
TJoe19-Dec-07 5:30 
GeneralRe: PropertyGrid Pin
netJP12L19-Dec-07 5:37
netJP12L19-Dec-07 5:37 
AnswerRe: PropertyGrid Pin
TJoe19-Dec-07 6:05
TJoe19-Dec-07 6:05 
GeneralRe: PropertyGrid Pin
netJP12L19-Dec-07 6:58
netJP12L19-Dec-07 6:58 
AnswerRe: PropertyGrid Pin
TJoe20-Dec-07 3:00
TJoe20-Dec-07 3:00 
GeneralRe: PropertyGrid Pin
netJP12L20-Dec-07 5:26
netJP12L20-Dec-07 5:26 
GeneralRe: PropertyGrid Pin
TJoe20-Dec-07 5:59
TJoe20-Dec-07 5:59 
Let's take an example. Assume that I'm a company providing a class/control that you purchased (e.g. Microsoft), and I have the following class that I provide you (the developer):

public class SomeClass {
    private Int32 hiddenInt = 0;
    
    public Int32 SomeProperty {
        get {
            return this.hiddenInt;
        }
    }    
}


Now, I would compile this class and only provide you with the assembly. So in your code, you would only be able to see SomeProperty, because it's public. You cannot see hiddenInt, because it's private.

Also, let's assume you want to change hiddenInt (probably because changing it would result in some effect you desire, such as limiting the number of characters that can be entered into a text box). You can use Reflection to change this value, like so:

//...
using System.Reflection;
 
//...
SomeClass c = new SomeClass();
Type t = typeof(SomeClass);
FieldInfo fi = t.GetField("hiddenInt",
    BindingFlags.NonPublic | BindingFlags.Instance);
fi.SetValue(c, 1);
  
// c.SomeProperty will now return 1, NOT 0


So you build your application and everything works great. But now I update my class (with bug fixes or optimizations) and I change it to:

public class SomeClass {
    public Int32 SomeProperty {
        get {
            return 0;
        }
    }    
}


As you can see, I removed the field and simply hard-coded the 0 in the property. Since hiddenInt was not visible to consumers of my class, I am free to change or remove it. Now if you start to use my new class, then you application will be broken. Because I no longer have the hiddenInt field.

This is a simple example, where you could simply detect that the field is no longer there and ignore the "error". But in the case of the PropertyGrid, you are enforcing user input. So your users would see a change in functionality or usability, if you were to ignore the error.

Now, in the case of the article you linked to. The code uses the "internal" name of the grid's control. This name can be changed at any time by MS.

Basically, if you start using things that are not publically visible (either public or protected in C# speak), then you can run into problems.
Take care,
Tom

-----------------------------------------------
Check out my blog at http://tjoe.wordpress.com

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.