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

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

public static BuildTypeCheckRelatedInstructions ( Mono.Cecil.ModuleDefinition module, object parameterDefinitionOrFieldDefinition, CustomAttribute attribute ) : IEnumerable
module Mono.Cecil.ModuleDefinition
parameterDefinitionOrFieldDefinition object
attribute Mono.Cecil.CustomAttribute
Результат IEnumerable
        public static IEnumerable<Instruction> BuildTypeCheckRelatedInstructions(ModuleDefinition module, object parameterDefinitionOrFieldDefinition, CustomAttribute attribute)
        {
            var typeReference = (TypeReference)attribute.ConstructorArguments[0].Value;
            foreach (var instruction in BuildDefaultInstructionsInternal(parameterDefinitionOrFieldDefinition))
            {
                yield return instruction;
            }

            var importedGetTypeFromHandle = module.Import(module.GetMethod("GetTypeFromHandle"));

            yield return Instruction.Create(OpCodes.Ldtoken, typeReference);
            yield return Instruction.Create(OpCodes.Call, importedGetTypeFromHandle);
        }

Usage Example

 protected override sealed void BuildInstructions(ModuleDefinition module, TypeDefinition type, MethodDefinition method, FieldDefinition field, CustomAttribute attribute, List <Instruction> instructions)
 {
     instructions.AddRange(ArgumentInstructionSequenceBuilder.BuildTypeCheckRelatedInstructions(module, field, attribute));
 }