Catel.Fody.Weaving.Argument.ArgumentInstructionSequenceBuilder.BuildBoundariesCheckInstructions C# (CSharp) Метод

BuildBoundariesCheckInstructions() публичный статический Метод

public static BuildBoundariesCheckInstructions ( object parameterDefinitionOrFieldDefinition, CustomAttribute attribute ) : IEnumerable
parameterDefinitionOrFieldDefinition object
attribute Mono.Cecil.CustomAttribute
Результат IEnumerable
        public static IEnumerable<Instruction> BuildBoundariesCheckInstructions(object parameterDefinitionOrFieldDefinition, CustomAttribute attribute)
        {
            foreach (var instruction in BuildDefaultInstructionsInternal(parameterDefinitionOrFieldDefinition))
            {
                yield return instruction;
            }

            foreach (var argument in attribute.ConstructorArguments)
            {
                object value = argument.Value;
                if (value is string)
                {
                    yield return Instruction.Create(OpCodes.Ldstr, (string)value);
                }
                else if (value is int)
                {
                    yield return Instruction.Create(OpCodes.Ldc_I4, (int)value);
                }
                else if (value is long)
                {
                    foreach (var instruction in BuildLongInstructions(value))
                    {
                        yield return instruction;
                    }
                }
                else if (value is float)
                {
                    yield return Instruction.Create(OpCodes.Ldc_R4, (float)value);
                }
                else if (value is double)
                {
                    yield return Instruction.Create(OpCodes.Ldc_R8, (double)value);
                }
            }
        }

Usage Example

Пример #1
0
 protected sealed override void BuildInstructions(ModuleDefinition module, TypeDefinition type, MethodDefinition method, FieldDefinition field, CustomAttribute attribute, List <Instruction> instructions)
 {
     instructions.AddRange(ArgumentInstructionSequenceBuilder.BuildBoundariesCheckInstructions(field, attribute));
 }