Granted, we're getting off topic... but Bill's Kung-Fu is clearly stronger than mine and I wish to learrrrrrrrn. (And figure it might be instructive to others)
So Bill, Am I understanding correctly that this defeats the "security" of scoping something as private? Are there limits to this? (Like does this work across assemblies?) (Yah, I know I could see for myself, but I'm late for work.) :) Brian -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Bill Conroy Sent: Wednesday, February 12, 2003 8:15 PM To: 'Brian Deacon'; [EMAIL PROTECTED]; 'NAnt Developers (E-mail)' Subject: [nant-dev] RE: [Nant-users] Adding Tasks 0.7.9 vs 0.8 [Hello...new to the list] >> NAnt uses reflection in combination with the TaskAttribute >> to match your attributes up with your properties and a privately >> scoped property not only won't show up in reflection, >> but NAnt wouldn't be able to assign to it even if it did. You can view and set private members of a type. I have an example below[1] that shows setting a private field on a type as well as a private property. The reason this doesn't work with Nant is because the Nant code specifically checks only Public properties. Line 130 of Element.cs: PropertyInfo[] propertyInfoArray = currentType.GetProperties(BindingFlags.Public|BindingFlags.Instance); could be: PropertyInfo[] propertyInfoArray = currentType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance); Or: PropertyInfo[] propertyInfoArray = currentType.GetProperties(BindingFlags.NonPublic|BindingFlags.Public|Bin dingFlags.Instance); HTH -bc [1] <code> namespace ReflectTest { using System; using System.Reflection; class Class1 { static void Main(string[] args) { Class2 c2 = new Class2(); Type t = typeof(Class2); // or c2.GetType() PropertyInfo[] propertyInfoArray = t.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance); foreach (PropertyInfo pi in propertyInfoArray ) { System.Diagnostics.Debug.WriteLine(pi.Name); pi.SetValue(c2, "TestingProp", null); } // comments states I could do this, but code doesn't FieldInfo[] fis = t.GetFields(BindingFlags.NonPublic|BindingFlags.Instance); foreach (FieldInfo fi in fis ) { System.Diagnostics.Debug.WriteLine(fi.Name); fi.SetValue(c2, "TestingField"); System.Diagnostics.Debug.WriteLine(fi.GetValue(c2)); } } } class Class2 { private string _prop; private string prop { get { return String.Empty; } set { // for show System.Diagnostics.Debug.WriteLine(value); } } } } </code> -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Brian Deacon Sent: Wednesday, February 12, 2003 9:39 PM To: [EMAIL PROTECTED]; 'NAnt Developers (E-mail)' Subject: RE: [Nant-users] Adding Tasks 0.7.9 vs 0.8 That will -definitely- keep it from working. NAnt uses reflection in combination with the TaskAttribute to match your attributes up with your properties and a privately scoped property not only won't show up in reflection, but NAnt wouldn't be able to assign to it even if it did. Hmmm... Is there a flag to AttributeUsage that can specify public properties only? 'twould seem nice if the compiler could have caught that and failed the compile. Brian -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Simon Steele Sent: Tuesday, February 11, 2003 7:14 AM To: 'Gill, Bobby'; [EMAIL PROTECTED] Subject: RE: [Nant-users] Adding Tasks 0.7.9 vs 0.8 Hi Bobby, I wonder if you should have: public string slnFileName ^^^^^^ Public access. I'm not sure - without looking at your source, I couldn't be sure. All of my attributes are marked as public, and I've never had this problem. Simon. > -----Original Message----- > From: Gill, Bobby [mailto:[EMAIL PROTECTED]] > Sent: 11 February 2003 14:59 > To: Simon Steele; [EMAIL PROTECTED] > Subject: RE: [Nant-users] Adding Tasks 0.7.9 vs 0.8 > > Another problem that I am having is with setting the values > of the TaskAttributes. For instance if I have: > > [TaskAttribute("solution",Required = true)] > private string slnFileName > { > get { return slnFileName_m; } set { > slnFileName_m=value;} > } > > Whenever I try to reference the slnFileName_m variable, I > receive Null pointer errors. My .build file does have the > solution attribute along with a value within, but for some > reason, it doesn't seem to be transferring over to the > variable within the solution property? Any ideas as to what I > am missing?? Thanks > > Bobby Gill > [EMAIL PROTECTED] __________________________________________________________________ This message has been checked for all known viruses by Star Internet delivered through the MessageLabs Virus Scanning Service. ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ Nant-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Nant-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers ------------------------------------------------------- This SF.NET email is sponsored by: FREE SSL Guide from Thawte are you planning your Web Server Security? Click here to get a FREE Thawte SSL guide and find the answers to all your SSL security issues. http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en _______________________________________________ Nant-developers mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nant-developers