This is a post on how I embedded a Mono C# library in a Cocoa application.<div><a href="http://ramblingsofcode.blogspot.com/2011/07/embedding-mono-runtime-in-cocoa-app.html">http://ramblingsofcode.blogspot.com/2011/07/embedding-mono-runtime-in-cocoa-app.html</a></div>
<div><br></div><div>Then you properly export/register your C# classes and methods.  Then you can call:</div><div><br></div><div><font face="'courier new', monospace">MonoCSharpClass* csharpObject = [CSharpStaticClass getAnObject];</font></div>
<div><font face="'courier new', monospace">NSArray* passinArray = </font></div><div><font face="'courier new', monospace">[csharpObject runAMethod:passinArray];</font></div><div><font face="'courier new', monospace">NSArray* getArray = [csharpObject returnNSArray];</font></div>
<div><br></div><div>In the C# side you'd have:</div><div><font face="'courier new', monospace">[Register("CSharpStaticClass"]</font></div><div><font face="'courier new', monospace">public static class CSharpStaticClass : NSObject</font></div>
<div><font face="'courier new', monospace">{</font></div><div><font face="'courier new', monospace">   [Export("getAnObject")]</font></div><div><font face="'courier new', monospace">   static public MonoCSharpClass GetAnObject() { .. }</font></div>
<div><font face="'courier new', monospace">}</font></div><div><font face="'courier new', monospace">[Register("MonoCSharpClass")]</font></div><div><font face="'courier new', monospace">public class MonoCSharpClass : NSObject</font></div>
<div><font face="'courier new', monospace">{</font></div><div><font face="'courier new', monospace">   [Export("runAMethod:")]</font></div><div><font face="'courier new', monospace">   public void RunAMethod(NSArray inArray) { .. }</font></div>
<div><font face="'courier new', monospace">   [Export("returnNSArray")]</font></div><div><font face="'courier new', monospace">   public NSArray ReturnNSArray() { .. }</font></div><div><font face="'courier new', monospace">}</font><br>
<br>You have to convert your List<int> into an NSArray.  I have it setup so I generate .h files and .m/.h files for the static classes.  To the obj-c programmer using the C# classes is exactly the same as using an objc-c library.</div>
<div><br></div><div>Maybe that will help you.</div><div><br></div><div>Duane  </div><div><br><div class="gmail_quote">On Sat, Apr 7, 2012 at 12:25 PM, liljo <span dir="ltr"><<a href="mailto:lantoine.jo@gmail.com">lantoine.jo@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm embedding Mono in an MacOSX app written in Objective-c.<br>
<br>
I'm accessing a C# lib (DDL), which only contains a bunch of static methods<br>
returning different types. So far I can successfully get a returned int,<br>
double and string, but I'm having trouble retrieving a returned array...<br>
<br>
For exemple, here's how I retrieve an int:<br>
<br>
MonoDomain *domain = mono_jit_init("TestDomain");<br>
<br>
NSBundle* mainBundle = [NSBundle mainBundle];<br>
NSString* dll = [mainBundle pathForResource:@"TestLib86" ofType:@"dll"];<br>
<br>
MonoAssembly* assembly = mono_domain_assembly_open(domain, [dll<br>
UTF8String]);<br>
<br>
MonoImage* image = mono_assembly_get_image(assembly);<br>
<br>
// Get INTEGER<br>
<br>
// get a method handle to whatever you like<br>
const char* descAsString = "MiniLib86.Show:GetInt()";<br>
MonoMethodDesc* description = mono_method_desc_new(descAsString,TRUE);<br>
MonoMethod* method = mono_method_desc_search_in_image(description, image);<br>
<br>
// call it<br>
void* args[0];<br>
MonoObject *result = mono_runtime_invoke(method, NULL, args, NULL);<br>
int int_result = *(int*)mono_object_unbox (result);<br>
<br>
// See the result in log<br>
NSLog(@"int result %i", int_result);<br>
<br>
<br>
The method in C# that returns an List looks like this:<br>
<br>
public static List<int> GetListInt()<br>
{<br>
    return new System.Collections.Generic.List<int>{1,2,3,4,5};<br>
}<br>
<br>
Any help would be really appreciated !<br>
<br>
--<br>
View this message in context: <a href="http://mono.1490590.n4.nabble.com/How-to-handle-returned-List-tp4539658p4539658.html" target="_blank">http://mono.1490590.n4.nabble.com/How-to-handle-returned-List-tp4539658p4539658.html</a><br>

Sent from the Mono - OSX mailing list archive at Nabble.com.<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>
</blockquote></div><br></div>