Пример #1
0
        private void EnsureVariableTypes(ILConversion conversion, MethodDefinition method, TypeReference genericArgumentSource)
        {
            if (method.Body.HasVariables)
            {
                foreach (var variable in method.Body.Variables)
                {
                    var resolvedVariableTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, variable.VariableType);

                    Types.Scanning.EnsureType(conversion, resolvedVariableTypeReference);
                }
            }
        }
Пример #2
0
        private void EnsureReturnType(ILConversion conversion, MethodDefinition method, TypeReference genericArgumentSource)
        {
            var returnType = method.ReturnType;

            // If generic, go ahead and skip.  It will get resolved.
            if (returnType.IsGenericParameter)
            {
                return;
            }

            var resolvedReturnTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, returnType);

            Types.Scanning.EnsureType(conversion, resolvedReturnTypeReference);
        }
Пример #3
0
        private void EnsureTypes(ILConversion conversion, EventDefinition propertyDefinition, TypeReference genericArgumentSource)
        {
            var eventTypeReference = propertyDefinition.EventType;

            // If generic, go ahead and skip.  It will get resolved.
            if (eventTypeReference.IsGenericParameter)
            {
                return;
            }

            var resolvedEventTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, propertyDefinition.EventType);

            var eventTypeDefinition = Models.Types.ResolveToTypeDefinition(conversion.RuntimicSystem, resolvedEventTypeReference);

            Execution.Types.Ensuring.Ensure(conversion, eventTypeDefinition, null, null);
        }
Пример #4
0
        private void EnsureGenericParameters(ILConversion conversion, MethodDefinition method, TypeReference genericArgumentSource)
        {
            var genericParameters = method.GenericParameters;

            for (int i = 0; i < genericParameters.Count; i++)
            {
                var genericParameter = genericParameters[i];

                var genericParameterConstraints = genericParameter.Constraints;

                for (int j = 0; j < genericParameterConstraints.Count; j++)
                {
                    var resolvedConstraintTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, genericParameterConstraints[j]);

                    Types.Scanning.EnsureType(conversion, resolvedConstraintTypeReference);
                }
            }
        }
Пример #5
0
        private void EnsureTypes(ILConversion conversion, PropertyDefinition propertyDefinition, TypeReference genericArgumentSource)
        {
            var propertyTypeReference = propertyDefinition.PropertyType;

            // If generic, go ahead and skip.  It will get resolved.
            if (propertyTypeReference.IsGenericParameter)
            {
                return;
            }

            var resolvedPropertyTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, propertyTypeReference);

            var propertyTypeDefinition = Models.Types.ResolveToTypeDefinition(conversion.RuntimicSystem, resolvedPropertyTypeReference);

            //Execution.Types.Ensuring.Ensure(conversion.Model, propertyTypeDefinition, null, null);

            throw new System.Exception("Fix");
        }
Пример #6
0
        private void EnsureParameterTypes(ILConversion conversion, MethodDefinition method, TypeReference genericArgumentSource)
        {
            var parameters = method.Parameters;

            for (int i = 0; i < parameters.Count; i++)
            {
                var parameter = parameters[i];

                var parameterType = parameter.ParameterType;

                if (parameterType.IsGenericParameter)
                {
                    continue;
                }

                var resolvedParameterTypeReference = Cecil.ResolveAnyTypeArguments(genericArgumentSource, parameterType);

                Types.Scanning.EnsureType(conversion, resolvedParameterTypeReference);
            }
        }