<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hello all<br>
    <br>
    Here is another attempt at making the Sample's bindings C#-ish.<br>
    <br>
    With doing it this way there are no [Export(XXXX)] used and the
    Person class is very simple.&nbsp; The binding in IB are mapped directly
    to Person properties.<br>
    <br>
    Implementing the sample this way I was thinking that maybe the
    NSObject2.cs class could be extended with some helper methods of the
    form:<br>
    <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public virtual bool CanConvertFrom(Type sourceType)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public virtual bool CanConvertTo(Type destinationType)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public virtual object ConvertFrom(object value)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public virtual object ConvertTo(Type destinationType)<br>
    <br>
    Then in each Class that derives from NSObject could override these
    methods with their specific implementation that corresponds to what
    the class accepts in their respective -&gt; public static implicit
    operator &lt;- implementations.<br>
    <br>
    At the very least a default type converter in the genre of the
    provided MonoMacTypeConverter.cs class provided.&nbsp; That way
    developers would have a lot of the implementation hidden as was
    suggested below.<br>
    <br>
    Just throwing some ideas out there.<br>
    <br>
    Kenneth<br>
    <br>
    On 11/23/10 3:40 PM, Miguel de Icaza wrote:
    <blockquote
      cite="mid:AANLkTinZZRC=Qq6LW0Yqq6FUBbm+xTaJ57mKa7hatrPH@mail.gmail.com"
      type="cite">Hello,<br>
      <br>
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div text="#000000" bgcolor="#ffffff"> I at first write the
            Person.cs class with C# native type but what I found myself
            doing all the time was converting to and from native to
            NSString all over the place so thought that made the code
            messy.&nbsp; For instance in the SetValueForKey method.&nbsp; If those
            methods should be using string instead of NSString I could
            change them when I find them.<br>
          </div>
        </blockquote>
        <div><br>
        </div>
        <div>We should change that, and then introduce a
          "LowLevelSetValueForKey" if we need, like we do in
          NSDictionary for those that want to pass handles directly.</div>
        <div><br>
        </div>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div text="#000000" bgcolor="#ffffff"> I totally agree with
            you on the C# 3 features.&nbsp; One of the questions that I was
            going to post was how to get around the NSDictionary use and
            convert back and forth to native Dictionary types easily.&nbsp; I
            guess I am missing that part to start using more of the C#
            features.&nbsp; An example would definitely be welcome on how to
            go about that.</div>
        </blockquote>
        <div><br>
        </div>
        <div>The good news is that NSDictionary implements IDictionary,
          so we can always treat NSDictionary in a .NET way.</div>
        <div><br>
          The problem is that it comes with some overhead, so it might
          be a good idea to write NSDictionary-&gt;Dictionary and back
          helper methods.</div>
      </div>
    </blockquote>
  </body>
</html>