本文整理汇总了C#中System.Reflection.ParameterModifier.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# ParameterModifier.Clone方法的具体用法?C# ParameterModifier.Clone怎么用?C# ParameterModifier.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.ParameterModifier
的用法示例。
在下文中一共展示了ParameterModifier.Clone方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BindToMethod
public override MethodBase BindToMethod (BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] names, out object state)
{
Type[] types;
if (args == null)
types = Type.EmptyTypes;
else {
types = new Type [args.Length];
for (int i = 0; i < args.Length; ++i) {
if (args [i] != null)
types [i] = args [i].GetType ();
}
}
MethodBase selected = null;
if (names != null) {
foreach (var m in match) {
var parameters = m.GetParameters ();
int i;
/*
* Find the corresponding parameter for each parameter name,
* reorder types/modifiers array during the search.
*/
Type[] newTypes = (Type[])types.Clone ();
ParameterModifier[] newModifiers = modifiers != null ? (ParameterModifier[])modifiers.Clone () : null;
for (i = 0; i < names.Length; ++i) {
/* Find the corresponding parameter */
int nindex = -1;
for (int j = 0; j < parameters.Length; ++j) {
if (parameters [j].Name == names [i]) {
nindex = j;
break;
}
}
if (nindex == -1)
break;
if (i < newTypes.Length && nindex < types.Length)
newTypes [i] = types [nindex];
if (modifiers != null && i < newModifiers.Length && nindex < modifiers.Length)
newModifiers [i] = modifiers [nindex];
}
if (i < names.Length)
continue;
selected = SelectMethod (bindingAttr, new MethodBase [] { m }, newTypes, newModifiers, true, args);
if (selected != null)
break;
}
} else {
selected = SelectMethod (bindingAttr, match, types, modifiers, true, args);
}
state = null;
if (selected != null && names != null)
ReorderParameters (names, ref args, selected);
if (selected != null) {
if (args == null)
args = EmptyArray<object>.Value;
AdjustArguments (selected, ref args);
}
return selected;
}