internal CustomAttributeTypedArgument(RuntimeModule scope, CustomAttributeEncodedArgument encodedArg)
{
CustomAttributeEncoding encodedType = encodedArg.CustomAttributeType.EncodedType;
switch (encodedType)
{
case CustomAttributeEncoding.Undefined:
throw new ArgumentException("encodedArg");
case CustomAttributeEncoding.Enum:
RuntimeModule scope1 = scope;
CustomAttributeType customAttributeType = encodedArg.CustomAttributeType;
string enumName = customAttributeType.EnumName;
this.m_argumentType = (Type)CustomAttributeTypedArgument.ResolveType(scope1, enumName);
long primitiveValue = encodedArg.PrimitiveValue;
customAttributeType = encodedArg.CustomAttributeType;
int num = (int)customAttributeType.EncodedEnumType;
this.m_value = CustomAttributeTypedArgument.EncodedValueToRawValue(primitiveValue, (CustomAttributeEncoding)num);
break;
case CustomAttributeEncoding.String:
this.m_argumentType = typeof(string);
this.m_value = (object)encodedArg.StringValue;
break;
case CustomAttributeEncoding.Type:
this.m_argumentType = typeof(Type);
this.m_value = (object)null;
if (encodedArg.StringValue == null)
{
break;
}
this.m_value = (object)CustomAttributeTypedArgument.ResolveType(scope, encodedArg.StringValue);
break;
case CustomAttributeEncoding.Array:
CustomAttributeEncoding encodedArrayType = encodedArg.CustomAttributeType.EncodedArrayType;
this.m_argumentType = (encodedArrayType != CustomAttributeEncoding.Enum ? CustomAttributeTypedArgument.CustomAttributeEncodingToType(encodedArrayType) : (Type)CustomAttributeTypedArgument.ResolveType(scope, encodedArg.CustomAttributeType.EnumName)).MakeArrayType();
if (encodedArg.ArrayValue == null)
{
this.m_value = (object)null;
break;
}
CustomAttributeTypedArgument[] array = new CustomAttributeTypedArgument[encodedArg.ArrayValue.Length];
for (int index = 0; index < array.Length; ++index)
{
array[index] = new CustomAttributeTypedArgument(scope, encodedArg.ArrayValue[index]);
}
this.m_value = (object)Array.AsReadOnly <CustomAttributeTypedArgument>(array);
break;
default:
this.m_argumentType = CustomAttributeTypedArgument.CustomAttributeEncodingToType(encodedType);
this.m_value = CustomAttributeTypedArgument.EncodedValueToRawValue(encodedArg.PrimitiveValue, encodedType);
break;
}
}