本文整理汇总了C#中dnlib.DotNet.TypeSig.Resolve方法的典型用法代码示例。如果您正苦于以下问题:C# TypeSig.Resolve方法的具体用法?C# TypeSig.Resolve怎么用?C# TypeSig.Resolve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dnlib.DotNet.TypeSig
的用法示例。
在下文中一共展示了TypeSig.Resolve方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetEnumUnderlyingType
/// <summary>
/// Gets the underlying type, if the specified type is an enum.
/// Otherwise, returns null.
/// </summary>
public static TypeSig GetEnumUnderlyingType(TypeSig enumType)
{
// unfortunately we cannot rely on enumType.IsValueType here - it's not set when the instruction operand is a typeref (as opposed to a typespec)
if (enumType != null && !IsArrayPointerOrReference(enumType)) {
// value type might be an enum
TypeDef typeDef = enumType.Resolve();
if (typeDef != null && typeDef.IsEnum) {
return typeDef.GetEnumUnderlyingType().RemovePinnedAndModifiers();
}
}
return null;
}
示例2: MakeDefaultValue
Expression MakeDefaultValue(TypeSig type)
{
TypeDef typeDef = type.Resolve();
if (typeDef != null) {
if (TypeAnalysis.IsIntegerOrEnum(type))
return AstBuilder.MakePrimitive(0, typeDef);
else if (!DnlibExtensions.IsValueType(typeDef))
return new NullReferenceExpression();
switch (typeDef.FullName) {
case "System.Nullable`1":
return new NullReferenceExpression();
case "System.Single":
return new PrimitiveExpression(0f);
case "System.Double":
return new PrimitiveExpression(0.0);
case "System.Decimal":
return new PrimitiveExpression(0m);
}
}
return new DefaultValueExpression { Type = AstBuilder.ConvertType(type) };
}