GetCoreTypeReference() public method

public GetCoreTypeReference ( string typeName ) : TypeReference
typeName string
return Mono.Cecil.TypeReference
Example #1
0
        private void EnsureStaticConstructor(TypeDefinition type)
        {
            var staticConstructor = type.Constructor(true);

            if (staticConstructor == null)
            {
                FodyEnvironment.LogDebug($"\t\t\t{type.Name} - adding static constructor");

                var voidType = _msCoreReferenceFinder.GetCoreTypeReference("Void");

                staticConstructor = new MethodDefinition(".cctor", MethodAttributes.Private | MethodAttributes.HideBySig | MethodAttributes.SpecialName | MethodAttributes.Static | MethodAttributes.RTSpecialName,
                                                         type.Module.ImportReference(voidType));

                var body = staticConstructor.Body;
                body.SimplifyMacros();

                body.Instructions.Add(Instruction.Create(OpCodes.Ret));

                body.OptimizeMacros();

                type.Methods.Add(staticConstructor);

                FodyEnvironment.LogDebug($"\t\t\t{type.Name} - added static constructor");
            }
        }
        private static CustomAttribute CreateGeneratedCodeAttribute(MsCoreReferenceFinder msCoreReferenceFinder, ModuleDefinition importingModule)
        {
            var attributeType = msCoreReferenceFinder.GeneratedCodeAttribute;

            if (attributeType is null)
            {
                return(null);
            }

            var stringType = (TypeDefinition)msCoreReferenceFinder.GetCoreTypeReference("System.String");

            var constructor = attributeType.Resolve().FindConstructor(new[] { stringType, stringType }.ToList());

            if (constructor is null)
            {
                return(null);
            }

            var version = typeof(ModuleWeaver).Assembly.GetName().Version.ToString();
            var name    = typeof(ModuleWeaver).Assembly.GetName().Name;

            var generatedAttribute = new CustomAttribute(importingModule.ImportReference(constructor));

            generatedAttribute.ConstructorArguments.Add(new CustomAttributeArgument(stringType, name));
            generatedAttribute.ConstructorArguments.Add(new CustomAttributeArgument(stringType, version));

            return(generatedAttribute);
        }
Example #3
0
        private void DetermineTypes()
        {
            var module = TypeDefinition.Module;

            switch (Version)
            {
            case CatelVersion.v5:
                PropertyDataType = module.ImportReference(TypeDefinition.Module.FindType("Catel.Core", "PropertyData"));
                break;

            default:
            case CatelVersion.v6:
                PropertyDataType = module.ImportReference(TypeDefinition.Module.FindType("Catel.Core", "IPropertyData"));
                break;
            }

            var advancedPropertyChangedEventArgsType = TypeDefinition.Module.FindType("Catel.Core", "AdvancedPropertyChangedEventArgs");

            if (advancedPropertyChangedEventArgsType is null == false)
            {
                AdvancedPropertyChangedEventArgsType = module.ImportReference(advancedPropertyChangedEventArgsType);
            }

            var propertyChangedEventArgsType = _msCoreReferenceFinder.GetCoreTypeReference("System.ComponentModel.PropertyChangedEventArgs");

            if (propertyChangedEventArgsType is null == false)
            {
                PropertyChangedEventArgsType = module.ImportReference(propertyChangedEventArgsType);
            }
        }
        protected GenericInstanceType GetPropertyChangedEventHandler_Catel4_Catel5(PropertyDefinition property)
        {
            var genericHandlerType = _msCoreReferenceFinder.GetCoreTypeReference("System.EventHandler`1");

            if (genericHandlerType is null)
            {
                FodyEnvironment.WriteError("Expected to find EventHandler<T>, but type was not  found");
                return(null);
            }

            var advancedPropertyChangedEventArgsType = property.Module.FindType("Catel.Core", "Catel.Data.AdvancedPropertyChangedEventArgs");

            var handlerType = new GenericInstanceType(genericHandlerType);

            handlerType.GenericArguments.Add(advancedPropertyChangedEventArgsType);

            return(handlerType);
        }
        private static CustomAttribute CreateGeneratedCodeAttribute(MsCoreReferenceFinder msCoreReferenceFinder, ModuleDefinition importingModule)
        {
            var attributeType = msCoreReferenceFinder.GeneratedCodeAttribute;
            if (attributeType == null)
            {
                return null;
            }

            var stringType = (TypeDefinition)msCoreReferenceFinder.GetCoreTypeReference("System.String");

            var constructor = attributeType.Resolve().FindConstructor(new[] {stringType, stringType}.ToList());
            if (constructor == null)
            {
                return null;
            }

            var version = typeof(ModuleWeaver).Assembly.GetName().Version.ToString();
            var name = typeof(ModuleWeaver).Assembly.GetName().Name;

            var generatedAttribute = new CustomAttribute(importingModule.Import(constructor));
            generatedAttribute.ConstructorArguments.Add(new CustomAttributeArgument(stringType, name));
            generatedAttribute.ConstructorArguments.Add(new CustomAttributeArgument(stringType, version));

            return generatedAttribute;
        }