6 {
10 string defaultValue = scope.GetDefaultValue(token, out
value, out
length, out corElementType);
11 RuntimeType runtimeType = fieldTypeHandle.GetRuntimeType();
12 if (runtimeType.IsEnum && !raw)
13 {
15 switch (corElementType)
16 {
20 num = *(ushort*)(&
value);
21 break;
23 num = *(sbyte*)(&
value);
24 break;
26 num = *(
byte*)(&
value);
27 break;
29 num = *(
short*)(&
value);
30 break;
32 num = *(ushort*)(&
value);
33 break;
35 num = *(
int*)(&
value);
36 break;
38 num = (uint)(*(
int*)(&
value));
39 break;
42 break;
45 break;
47 return null;
48 default:
49 throw new FormatException(SR.Arg_BadLiteralFormat);
50 }
51 return RuntimeType.CreateEnum(runtimeType, num);
52 }
54 {
56 switch (corElementType)
57 {
62 break;
65 break;
67 return null;
68 default:
69 throw new FormatException(SR.Arg_BadLiteralFormat);
70 }
72 }
73 return corElementType switch
74 {
75 CorElementType.ELEMENT_TYPE_VOID =>
DBNull.Value,
76 CorElementType.ELEMENT_TYPE_CHAR => *(
char*)(&
value),
77 CorElementType.ELEMENT_TYPE_I1 => *(sbyte*)(&
value),
78 CorElementType.ELEMENT_TYPE_U1 => *(
byte*)(&
value),
79 CorElementType.ELEMENT_TYPE_I2 => *(
short*)(&
value),
80 CorElementType.ELEMENT_TYPE_U2 => *(ushort*)(&
value),
81 CorElementType.ELEMENT_TYPE_I4 => *(
int*)(&
value),
82 CorElementType.ELEMENT_TYPE_U4 => *(uint*)(&
value),
83 CorElementType.ELEMENT_TYPE_I8 =>
value,
84 CorElementType.ELEMENT_TYPE_U8 => (ulong)
value,
88 CorElementType.ELEMENT_TYPE_STRING => defaultValue ??
string.Empty,
90 _ => throw new FormatException(SR.Arg_BadLiteralFormat),
91 };
92 }