<HTML><HEAD><STYLE media="all" type="text/css">         #sig {                 /* Typography */                 color: black;                 font-size: 9pt;                 font-family: Arial, Verdana, sans-serif;                 background-color: #EEE;                 line-height: 15px;                 margin: 6px 0;                 padding: 6px;                 border-top: 1px #999999 dotted;                 border-bottom: 1px #999999 dotted;         }         #sig .row2 {                                 margin-top: 0px;                 margin-bottom: -8px;         }         #sig .row a:link, #sig .row a:visited {                 color: #164D8F;                 text-decoration: none;                 border-bottom: 1px solid #99B1DB;         }         #sig .row a:hover {                 color: #4C71A8;                 text-decoration: none;         } </STYLE></HEAD><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On Jan 2, 2007, at 2:55 PM, Allan Hsu wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On Jan 2, 2007, at 12:55 AM, R. Tyler Ballance wrote:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Sorry about the delay in replying, but I've been busy working/traveling. If you need to call/access managed static methods, you should either instantiate a DBMonoClassRepresentation around your MonoClass* or use the C-style function calls defined in DBInvoke.h. Neither of these should require an object instance.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Here's the convention I use... If I need static functionality in a DBMonoObjectRepresentation subclass, I keep around a static MonoClass* or DBMonoClassRepresentation (depending on situation) that gets set in the ObjC class initializer. Any class methods in my subclass call through using either the DBMonoClassRepresentation object or the DBMonoClassX() functions in DBMonoInvoke.m. This is sort of what it looks like, but I'm writing it on the spot, so it may not work exactly right:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">static MonoClass *_monoClass = NULL;</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">+ (void)initialize {</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>if([self class] != [MyClass class])</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return;</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>_monoClass = (whatever you need to do to get your MonoClass *, probably involves +[DBMonoEnvironment monoClassWithName: fromAssembly:]);</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">}</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">+ (NSString *)someStaticProperty {</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>MonoString *monoString = DBMonoClassGetProperty(_monoClass, "someStaticProperty");</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>return [NSString stringWithMonoString:monoString];</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">}</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Note that the method invocation functions in DBInvoke are vararg-based, so it may be easier to use a DBMonoClassRepresentation for your purposes, but the idea is the same.</DIV></BLOCKQUOTE><BR></DIV><DIV>I had an inkling the "suggested" solution would be somewhat along those lines, I wasn't sure how kosher it was to be calling the seemingly internal DBMonoClass*() C functions from Objective-C, I was more under the assumption of pushing as much as possible through the objective-C methods/accessors. </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I personally like to keep my Cocoa code as bracketed as possible, but it's completely your prerogative as to whether or not you accept that patch in lieu of the method you described above, otherwise, i'll move my code over to using DBMonoClassGetProperty and DBMonoClassInvoke tomorrow :P</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>---I just got your other email----</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I'll take the examples with a grain of salt ;)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Here's the updated patch, I'm a fan of convenience methods ;)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN></SPAN></DIV></BODY></HTML>