本文整理汇总了C#中System.Reflection.MethodInfo.MakeGenericMethodFrom方法的典型用法代码示例。如果您正苦于以下问题:C# MethodInfo.MakeGenericMethodFrom方法的具体用法?C# MethodInfo.MakeGenericMethodFrom怎么用?C# MethodInfo.MakeGenericMethodFrom使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.MethodInfo
的用法示例。
在下文中一共展示了MethodInfo.MakeGenericMethodFrom方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MethodMatch
static bool MethodMatch (MethodInfo candidate, MethodInfo method)
{
if (candidate.Name != method.Name)
return false;
if (!HasExtensionAttribute (candidate))
return false;
var parameters = method.GetParameterTypes ();
if (parameters.Length != candidate.GetParameters ().Length)
return false;
if (method.IsGenericMethod) {
if (!candidate.IsGenericMethod)
return false;
if (candidate.GetGenericArguments ().Length != method.GetGenericArguments ().Length)
return false;
candidate = candidate.MakeGenericMethodFrom (method);
}
if (!TypeMatch (candidate.ReturnType, method.ReturnType))
return false;
var candidate_parameters = candidate.GetParameterTypes ();
if (candidate_parameters [0] != GetComparableType (parameters [0]))
return false;
for (int i = 1; i < candidate_parameters.Length; ++i)
if (!TypeMatch (candidate_parameters [i], parameters [i]))
return false;
return true;
}
示例2: MethodMatch
private static bool MethodMatch(MethodInfo candidate, MethodInfo method)
{
if (candidate.Name != method.Name || !HasExtensionAttribute(candidate))
{
return false;
}
var parameters = method.GetParameterTypes();
if (parameters.Length != candidate.GetParameters().Length)
{
return false;
}
else if (method.IsGenericMethod)
{
if (!candidate.IsGenericMethod || candidate.GetGenericArguments().Length != method.GetGenericArguments().Length)
{
return false;
}
candidate = candidate.MakeGenericMethodFrom(method);
}
if (!TypeMatch(candidate.ReturnType, method.ReturnType))
{
return false;
}
var candidate_parameters = candidate.GetParameterTypes();
if (candidate_parameters[0] != GetComparableType(parameters[0]))
{
return false;
}
for (int index = 1; index < candidate_parameters.Length; ++index)
{
if (!TypeMatch(candidate_parameters[index], parameters[index]))
{
return false;
}
}
return true;
}