private TypeArray GetMethodTypeParameters(MethodInfo method, MethodSymbol parent)
{
if (method.IsGenericMethod)
{
Type[] genericArguments = method.GetGenericArguments();
CType[] ctypes = new CType[genericArguments.Length];
for (int i = 0; i < genericArguments.Length; i++)
{
Type t = genericArguments[i];
ctypes[i] = LoadMethodTypeParameter(parent, t);
}
// After we load the type parameters, we need to resolve their bounds.
for (int i = 0; i < genericArguments.Length; i++)
{
Type t = genericArguments[i];
ctypes[i].AsTypeParameterType().GetTypeParameterSymbol().SetBounds(
_bsymmgr.AllocParams(
GetCTypeArrayFromTypes(t.GetTypeInfo().GetGenericParameterConstraints())));
}
return _bsymmgr.AllocParams(ctypes.Length, ctypes);
}
return BSYMMGR.EmptyTypeArray();
}