Hello,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>I&#39;m experimenting with how to generate various constructs from the header files.  Here is a common pattern:</div>
<div><br></div>Inside AppKit\NSTextAttachment.cs there is this:<div><div><div><font face="&#39;courier new&#39;, monospace">@interface NSMutableAttributedString (NSMutableAttributedStringAttachmentConveniences)</font></div>

<div><font face="&#39;courier new&#39;, monospace">- (void)updateAttachmentsFromPath:(NSString *)path;</font></div><div><font face="&#39;courier new&#39;, monospace">@end</font></div></div></div></blockquote><div><br></div>
<div>I have seen this before;   As you noticed we used the [Target] attribute on the first parameter to tell the generator about this use case.</div><div><br></div><div>Instead of adding the methods to the base class (in this case NSMutableAttributedString) we put these in the place where they actually need to be (the NSTextAttachment).  </div>
<div><br></div><div>This is not always possible.   There are some extensions that are not really attached to any class and are really extensions to the base class and have no dependency to the new class or framework other than the fact that they are being defined there.   In those cases we went with the approach of sticking those into the base class.   Luckily there are not too many of these.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div>
</div><div><br></div><div>Which I tried to bind like this (ignoring making the C# method name better):<br><div><font face="&#39;courier new&#39;, monospace">  </font><span style="white-space:pre"><font face="&#39;courier new&#39;, monospace">//- (void)updateAttachmentsFromPath:(NSString *)path;
  [Export (&quot;updateAttachmentsFromPath:&quot;)]
  void UpdateAttachmentsFromPath ([Target] NSMutableAttributedString  obj, NSString path);</font></span></div></div></div></blockquote><div><br></div><div>This look ok, and needs to go into the NSTextAttachment interface.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div>(I do no think the generated code for when IsDirectBinding == false is correct.  But that is a side issue.)</div>
</div></blockquote><div><br></div><div>I would like to hear about this ;-)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div>Is this the correct binding?  I would of course have to call:</div>
<div>NSTextAttachment textAttachment;</div><div>textAttachment.UpdateAttachmentsFromPath(attributedStringObj, path);</div><div><br></div><div>
Or would I rather call:</div><div>attributedStringObj.UpdateAttachmentsFromPath(path);</div></div></blockquote><div><br></div><div>The former.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div>In my parser I have the ability of adding this method directly on NSMutableAttributedString, the 2nd example.  Another option would be to create an extension method to NSMutableAttributedString when parsing NSTextAttachment.  Maybe the generator should create:</div>

<div><br></div><div><font face="&#39;courier new&#39;, monospace">public static class NSMutableAttributedStringAttachmentConveniences</font></div><div><font face="&#39;courier new&#39;, monospace">{</font></div>
<div><font face="&#39;courier new&#39;, monospace">   public static void </font><font face="&#39;courier new&#39;, monospace">UpdateAttachmentsFromPath(this NSMutableAttributedString obj, NSString path)</font></div>
<div><font face="&#39;courier new&#39;, monospace">   { ...</font></div><div><font face="&#39;courier new&#39;, monospace">   }</font></div><div><font face="&#39;courier new&#39;, monospace">}</font></div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><font face="&#39;courier new&#39;, monospace"><span style="font-family:arial">So I know how to modify the parser what is the preferred solution?</span></font></div>
</blockquote><div><br></div><div>This is an intriguing approach;   I like that it is mapping into C# extension methods.</div><div><br></div><div>Since the binding is still on its early stages, we have the freedom to adopt this approach if it makes sense.   Notice that in this case, I am not sure that there is a benefit, but it might help in other cases.</div>
<div><br></div><div>Miguel. </div></div>