[Mono-list] Embedded API: Method signature not found with generic parameter
jonathan at mugginsoft.com
jonathan at mugginsoft.com
Sun Jul 14 12:49:39 UTC 2013
On 12 Jul 2013, at 21:48, jonathan at mugginsoft.com wrote:
> Can I obtain the generic template type from my ObjectSet MonoObject pointer rather than having to obtain it from a const char*.
> I am trying to write a "generic" routine for calling generic methods.
>
Perhaps another helper method is the way to go as working with generics directly through the embedded API seems so unpalatable.
This seems to work.
public static Type[] GenericArgumentTypes(Type t)
{
Type[] types = null;
if (t.ContainsGenericParameters) {
types = t.GetGenericArguments ();
}
return types;
}
public static IntPtr GenericArgumentTypeAtIndex(Type t, int index)
{
Type argType = null;
Type[] genericTypes = t.GetGenericArguments();
if (genericTypes != null & index < genericTypes.Length) {
argType = genericTypes[index];
}
return argType.TypeHandle.Value;
}
I presume it will be slower invoking the C# rather than wrestling with the runtime API directly but in my case the final method is cached in a Judy array so it is a one time hit for each method signature called during the lifetime of the domain.
Jonathan
More information about the Mono-list
mailing list