<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word">Thanks for your hints. So this is basically the way you choose when it comes to implementing NSTableView data sources as well, right?<div>
<br></div><div>Just for the background: Is there nothing like the concept of protocols on the .NET-side?<br></div></div></blockquote><div><br></div><div>There is nothing in C# or in the ECMA CLI that supports that model.</div>
<div><br></div><div>You can still support any protocol by hand by using attributes (like: [Export (&quot;someSelector:Named:&quot;)]) but there is no language support other than that.   The downside of using the loosely typed approach with manually adding attributes is that if your attribute name is wrong, or if the parameters that you declare are wrong, you will get the wrong results, or even a crash.</div>
<div><br></div><div>To solve that problem, we introduced a strongly typed system that map protocols to classes or abstract classes.   These classes have been decorated with a special [Model] attribute that ensures that only overwritten methods ever get invoked and only overwritten methods ever return true to the Objective-C messages &quot;does-this-object-respond-to-this-selector&quot; -- the foundation for optional methods in protocols.   </div>
<div><br></div><div>The Model attribute allows developers to use strong types, override methods strongly and not have to worry about incorrect signatures or incorrect type definitions.   The responsibility is shifted from the developer to MonoMac.</div>
<div><br></div><div>Miguel</div></div>