Example #1
0
 protected void AddConstraintsToGenericParameters(AnalysisNet.Types.IGenericDefinition genericDefinition, Cecil.IGenericParameterProvider genericParameterProvider)
 {
     foreach (AnalysisNet.Types.GenericParameter analysisNetParameter in genericDefinition.GenericParameters)
     {
         IEnumerable <Cecil.GenericParameterConstraint> constraints = analysisNetParameter.Constraints.Select(c => new Cecil.GenericParameterConstraint(ReferenceGenerator.TypeReference(c)));
         genericParameterProvider.GenericParameters.ElementAt(analysisNetParameter.Index).Constraints.AddRange(constraints);
     }
 }
Example #2
0
        private void ExtractGenericTypeParameters(AnalysisNet.Types.IGenericDefinition definingType, Cecil.TypeDefinition typedef)
        {
            for (int i = 0; i < typedef.GenericParameters.Count; ++i)
            {
                Cecil.GenericParameter parameterdef = typedef.GenericParameters[i];
                ushort index = (ushort)i;
                string name  = parameterdef.Name;
                AnalysisNet.Types.TypeKind         typeKind  = GetGenericParameterTypeKind(parameterdef);
                AnalysisNet.Types.GenericParameter parameter = new AnalysisNet.Types.GenericParameter(AnalysisNet.Types.GenericParameterKind.Type, index, name, typeKind);

                ExtractCustomAttributes(parameter.Attributes, parameterdef.CustomAttributes);

                parameter.GenericContainer = definingType;
                definingType.GenericParameters.Add(parameter);

                parameter.Constraints.AddRange(parameterdef.Constraints.Select(c => ExtractType(c.ConstraintType)));
            }
        }