MethodInfo MethodReplaceGenerics(MethodInfo Original)
{
if(Original.DeclaringType.IsGenericType)
{
Type NewDeclaring = GrabType(Original.DeclaringType);
if(NewDeclaring != Original.DeclaringType)
{
MethodInfo Ret = TypeBuilder.GetMethod(NewDeclaring, FindMatchingGenericMethod(Original) as MethodInfo);
return MethodReplaceGenerics(Ret);
}
}
if(Original.IsGenericMethod)
{
Type[] Replace = Original.GetGenericArguments();
if(!ReplaceGenericArguments(Replace))
return Original;
return Original.GetGenericMethodDefinition().MakeGenericMethod(Replace);
}
return Original;
}