<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Actually no, the issue here is he's using ClassHandle in a way that isn't supported. &nbsp;ClassHandle is used internally in the bindings to figure out if we're a direct binding or not to do appropriate dispatch, it is NOT analogous to [self class]; &nbsp;If you want [self class] you can do<div>Messaging.intptr_objc_msgSend (this.Handle, Selector.GetHandle ("class"))</div><div><br></div><div>Maybe we should expose this in a seperate property?</div><div><br></div><div>-g</div><div><br></div><div><div><div>On 2010-07-10, at 11:56 AM, Miguel de Icaza wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hello Duane,<div><br></div><div>&nbsp;&nbsp; &nbsp;Are you referencing monomac.dll, or are you compiling all its source code directly into your app?</div><div><br></div><div>&nbsp;&nbsp; &nbsp;This problem happens if you try to put the MonoMac source code into your project, instead of keeping it as a separate assembly.</div>
<div><br></div><div>Miguel<br><br><div class="gmail_quote">On Sat, Jul 10, 2010 at 10:04 AM, Duane Wandless <span dir="ltr">&lt;<a href="mailto:duane@wandless.net">duane@wandless.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div>Here is a test case that shows the same issue I have with an Obj-C object. &nbsp;In my real app the MyViewController object is created in obj-c. &nbsp;But this test case shows the same issue.</div><div><br></div><div>using System;</div>

<div>using MonoMac.Foundation;</div><div>using MonoMac.AppKit;</div><div>using MonoMac.ObjCRuntime;</div><div><br></div><div>namespace monoMain</div><div>{</div><div>&nbsp;&nbsp; &nbsp;public class myApp</div><div>&nbsp;&nbsp; &nbsp;{</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public static void Main()</div>

<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NSApplication.Init();</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyViewController sv = new MyViewController();</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine("class handle {0}", sv.ClassHandle.ToString("x"));</div>

<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine("class name {0}", new Class(sv.ClassHandle).Name);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Class kls = new Class("MyViewController");</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine("kls handle {0}", kls.Handle.ToString("x"));</div>

<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Console.WriteLine("kls name {0}", <a href="http://kls.Name">kls.Name</a>);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp;&nbsp; &nbsp;}</div><div><br></div><div>&nbsp;&nbsp; &nbsp;[Register("MyViewController")]</div><div>&nbsp;&nbsp; &nbsp;public class MyViewController : NSViewController</div>

<div>&nbsp;&nbsp; &nbsp;{</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public MyViewController() &nbsp;{ }</div><div>&nbsp;&nbsp; &nbsp;}</div><div>}</div></div><div><br></div><div><br></div><div>In the output I get:</div><div><div>class handle a0625e70</div><div>class name NSViewController</div>

<div>kls handle d5dbc0</div><div>kls name MyViewController</div></div><div><br></div><div>The desired output is to have MyViewController returned in both cases. &nbsp;If I use NSView as the class it does work as expected.</div>

<div><br></div><div>I modified Class.cs to print out additional info:</div><div><div>Registering MyViewController : NSViewController / 0xa0625e70 0xd5dbc0</div></div><div><div>Console.WriteLine ("Registering {0} : {1} / 0x{2} 0x{3}", name, parent_name, parent.ToString("x"), handle.ToString("x"));</div>

</div><div><br></div><div>So when the MyViewController is created it appears that its ClassHandle is incorrectly set to its super class handle. &nbsp;I did take it a step further and created MyViewController2 : MyViewController. &nbsp;And when sv.ClassHandle is printed out it is NSViewController's handle.</div>

<div><br></div><div>Thanks,</div><div>Duane</div><font color="#888888"><div><br></div>
</font><br>_______________________________________________<br>
Mono-osx mailing list<br>
<a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-osx" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-osx</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>Mono-osx mailing list<br><a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>http://lists.ximian.com/mailman/listinfo/mono-osx<br></blockquote></div><br></div></body></html>