本文整理汇总了C#中Dot42.CompilerLib.XModel.XTypeReference.IsGenericParameterArray方法的典型用法代码示例。如果您正苦于以下问题:C# XTypeReference.IsGenericParameterArray方法的具体用法?C# XTypeReference.IsGenericParameterArray怎么用?C# XTypeReference.IsGenericParameterArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dot42.CompilerLib.XModel.XTypeReference
的用法示例。
在下文中一共展示了XTypeReference.IsGenericParameterArray方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UnboxIfGeneric
private static void UnboxIfGeneric(XTypeReference type, AstExpression node, XTypeSystem typeSystem)
{
if (type.IsGenericParameter || type.IsGenericParameterArray())
{
var resultType = node.GetResultType();
if (resultType.IsByReference && !type.IsByReference)
{
var elementType = resultType.ElementType;
var clone = new AstExpression(node);
node.SetCode(AstCode.SimpleCastclass).SetArguments(clone).Operand = elementType;
}
else
{
if (TreatAsStruct(type, resultType))
{
ConvertUnboxStruct(node, resultType, typeSystem);
}
else
{
var clone = new AstExpression(node);
node.SetCode(AstCode.UnboxFromGeneric).SetArguments(clone).Operand = type;
}
}
}
}
示例2: BoxIfGeneric
private static void BoxIfGeneric(XTypeReference type, AstExpression node)
{
// TODO: CLR allows return-by-reference, though C# does not. Do we need to handle this here?
if (type.IsGenericParameter)
{
var resultType = node.GetResultType();
if (resultType.IsPrimitive)
{
var clone = new AstExpression(node);
node.SetCode(AstCode.BoxToGeneric)
.SetArguments(clone)
.Operand = type;
}
}
else if (type.IsGenericParameterArray())
{
var resultType = node.GetResultType().ElementType;
if (resultType.IsPrimitive)
{
var clone = new AstExpression(node);
node.SetCode(AstCode.BoxToGeneric).SetArguments(clone).Operand = type;
}
}
}