本文整理汇总了C#中System.Reflection.ParameterInfo.IsParamArray方法的典型用法代码示例。如果您正苦于以下问题:C# ParameterInfo.IsParamArray方法的具体用法?C# ParameterInfo.IsParamArray怎么用?C# ParameterInfo.IsParamArray使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.ParameterInfo
的用法示例。
在下文中一共展示了ParameterInfo.IsParamArray方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SimpleArgBuilder
public SimpleArgBuilder(ParameterInfo info, int index)
: this(info, info.ParameterType, index, info.IsParamArray(), info.IsParamDictionary()) {
}
示例2: CheckParameter
/// <summary>
/// 检查方法参数。
/// </summary>
/// <param name="parameter">要检查的方法参数。</param>
/// <param name="type">方法实参类型。</param>
/// <param name="optionalParamBinding">是否对可选参数进行绑定。</param>
/// <param name="isExplicit">类型检查时,如果考虑显式类型转换,则为 <c>true</c>;
/// 否则只考虑隐式类型转换。</param>
/// <param name="convertRefType">是否允许对按引用传递的类型进行类型转换。</param>
/// <returns>如果方法参数与实参兼容,则为 <c>true</c>;否则为 <c>false</c>。</returns>
private static bool CheckParameter(ParameterInfo parameter, Type type, bool optionalParamBinding,
bool isExplicit, bool convertRefType)
{
Type paramType = parameter.ParameterType;
if (paramType.ContainsGenericParameters)
{
return true;
}
if (type == typeof(Missing))
{
// 检查可选参数和 params 参数。
return parameter.IsParamArray() || (optionalParamBinding && parameter.HasDefaultValue);
}
bool isByRef = false;
if (paramType.IsByRef)
{
paramType = paramType.GetElementType();
isByRef = true;
}
if (type == null)
{
if (isByRef && !convertRefType)
{
return false;
}
// 检查引用类型。
return !paramType.IsValueType;
}
if (type.IsByRef)
{
if (isByRef)
{
return type.GetElementType() == paramType;
}
if (!convertRefType)
{
return false;
}
type = type.GetElementType();
}
return paramType.IsConvertFrom(type, isExplicit);
}
示例3: Convert
public override Expression Convert(DynamicMetaObject metaObject, Type restrictedType, ParameterInfo info, Type toType)
{
if (toType.IsAssignableFrom(restrictedType))
return AstUtils.Convert(metaObject.Expression, toType);
if (info.IsParamArray() && typeof(IList<object>).IsAssignableFrom(metaObject.LimitType))
{
return GetDynamicConversion(metaObject.Expression, toType);
}
if (toType == typeof(string))
{
return GetDynamicConversion(metaObject.Expression, toType);
}
return base.Convert(metaObject, restrictedType, info, toType);
}