本文整理汇总了C#中IType.GetEnumUnderlyingType方法的典型用法代码示例。如果您正苦于以下问题:C# IType.GetEnumUnderlyingType方法的具体用法?C# IType.GetEnumUnderlyingType怎么用?C# IType.GetEnumUnderlyingType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IType
的用法示例。
在下文中一共展示了IType.GetEnumUnderlyingType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetEnumToStringMethod
public static void GetEnumToStringMethod(
IType enumType,
ITypeResolver typeResolver,
out object[] code,
out IList<object> tokenResolutions,
out IList<IType> locals,
out IList<IParameter> parameters)
{
Debug.Assert(enumType.ToNormal().IsEnum, "This is for enum only");
var codeList = new List<object>();
codeList.Add(Code.Ldarg_0);
codeList.AppendInt(Code.Ldfld, 1);
var sizeOfEnum = enumType.GetEnumUnderlyingType().IntTypeBitSize() / 8;
// build cmp/jmp cases
var stringValues = 1;
foreach (var enumConstValue in IlReader.Fields(enumType, typeResolver).Where(f => f.IsConst))
{
codeList.Add(Code.Dup);
if (sizeOfEnum == 8)
{
codeList.AppendULong(
Code.Ldc_I8, enumConstValue.ConstantValue.ToString() == "-1" ? 0xffffffffffffffff : Convert.ToUInt64(enumConstValue.ConstantValue));
}
else
{
codeList.AppendUInt(Code.Ldc_I4, unchecked((uint)Convert.ToInt64(enumConstValue.ConstantValue)));
}
codeList.Add(Code.Bne_Un_S);
codeList.Add(6);
codeList.AppendInt(Code.Ldstr, ++stringValues);
codeList.Add(Code.Ret);
}
codeList.Add(Code.Pop);
codeList.AppendInt(Code.Ldstr, ++stringValues);
codeList.Add(Code.Ret);
// End of Code
// tokens
tokenResolutions = new List<object>();
// data
tokenResolutions.Add(enumType.GetFieldByName("Value", typeResolver));
foreach (var enumConstValue in IlReader.Fields(enumType, typeResolver).Where(f => f.IsConst))
{
tokenResolutions.Add(enumConstValue.Name);
}
// default value
tokenResolutions.Add(string.Empty);
// locals
locals = new List<IType>();
// code
code = codeList.ToArray();
// parameters
parameters = new List<IParameter>();
}
示例2: GetFields
public static IEnumerable<IField> GetFields(IType enumType, ITypeResolver typeResolver)
{
Debug.Assert(enumType.IsEnum, "This is for enum arrays only");
yield return enumType.GetEnumUnderlyingType().ToField(enumType, "Value");
}