[Mono-devel-list] Calling object constructor from C
James Lamanna
jamesl at appliedminds.com
Thu Feb 5 16:02:21 EST 2004
So I figured out the array problem I posted about earlier, but here's another problem I'd like some help with.
I'm trying to call a constructor for an object from C using the following:
MonoDomain *domain = mono_domain_get();
MonoAssembly *assembly = (MonoAssembly *)mono_assembly_get_main();
MonoClass *na_class = mono_class_from_name(assembly->image,
"DOL", "NetworkAdapter");
MonoObject *na_this = mono_object_new(domain, na_class);
MonoMethod *na_ctor = NULL;
MonoString *test_string = mono_string_new(domain, "Test String");
MonoString *test_string2 = mono_string_new(domain, "Test String");
MonoString *test_string3 = mono_string_new(domain, "Test String");
MonoString *test_string4 = mono_string_new(domain, "Test String");
MonoString *test_string5 = mono_string_new(domain, "Test String");
MonoArray *ip_array, *subnet_array;
MonoObject *na;
const char *na_ctor_name = "DOL.NetworkAdapter:.ctor (string,string[],string[],string,string)";
int i,;
void **args = g_new( void *, 5);
for (i = 0; i < na_class->method.count; i++) {
if (strncmp((char *)mono_method_full_name(na_class->methods[i]),
na_ctor_name, strlen(na_ctor_name)) == 0) {
na_ctor = na_class->methods[i];
break;
}
}
ip_array = mono_array_new(domain, mono_defaults.string_class, 1);
mono_array_set(ip_array, gpointer, 0, test_string);
subnet_array = mono_array_new(domain, mono_defaults.string_class, 1);
mono_array_set(subnet_array, gpointer, 0, test_string2);
args[0] = test_string3;
args[1] = ip_array;
args[2] = subnet_array;
args[3] = test_string4;
args[4] = test_string5;
na = mono_runtime_invoke(na_ctor, na_this, args, NULL);
The ctor is found ok, the arrays get set up ok, but mono_runtime_invoke always returns null.
Any help?
Thanks.
--
James Lamanna
Applied Minds, Inc.
1209 Grand Central Ave.
Glendale, CA 91201
(818) 332-5214
More information about the Mono-devel-list
mailing list