Пример #1
0
 private void ProcessAnonymousType(TypeDefinition anonymousTypeDefinition, GenericInstanceType anonymousInstanceType,
                                   MethodDefinition constructorDefinition, ExpressionCollection constructorArguments)
 {
     for (int i = 0; i < constructorDefinition.Parameters.Count; i++)
     {
         ParameterDefinition currentParameter = constructorDefinition.Parameters[i];
         int genericParameterIndex            = anonymousTypeDefinition.GenericParameters.IndexOf(currentParameter.ParameterType as GenericParameter);
         PropertyDefinition property          = FindPropertyOfType(anonymousTypeDefinition, currentParameter.ParameterType);
         TypeReference      propertyType      = anonymousInstanceType.GenericArguments[genericParameterIndex];
         if (anonymousInstanceType.PostionToArgument.ContainsKey(genericParameterIndex))
         {
             propertyType = anonymousInstanceType.PostionToArgument[genericParameterIndex];
         }
         Expression parameterExpression =
             new AnonymousPropertyInitializerExpression(property, propertyType);
         int        argumentIndex      = GetParameterIndexWithType(constructorDefinition, currentParameter.ParameterType);
         Expression argumentExpression = transformer.Visit(constructorArguments[argumentIndex].Clone()) as Expression;
         initializerExpressions.Expressions.Add(
             new BinaryExpression(BinaryOperator.Assign, parameterExpression, argumentExpression, this.typeSystem, null));
     }
 }
 private void ProcessAnonymousType(TypeDefinition anonymousTypeDefinition, GenericInstanceType anonymousInstanceType, MethodDefinition constructorDefinition, ExpressionCollection constructorArguments)
 {
     V_0 = 0;
     while (V_0 < constructorDefinition.get_Parameters().get_Count())
     {
         V_1             = constructorDefinition.get_Parameters().get_Item(V_0);
         V_2             = anonymousTypeDefinition.get_GenericParameters().IndexOf(V_1.get_ParameterType() as GenericParameter);
         stackVariable19 = this.FindPropertyOfType(anonymousTypeDefinition, V_1.get_ParameterType());
         V_3             = anonymousInstanceType.get_GenericArguments().get_Item(V_2);
         if (anonymousInstanceType.get_PostionToArgument().ContainsKey(V_2))
         {
             V_3 = anonymousInstanceType.get_PostionToArgument().get_Item(V_2);
         }
         V_4 = new AnonymousPropertyInitializerExpression(stackVariable19, V_3);
         V_5 = this.GetParameterIndexWithType(constructorDefinition, V_1.get_ParameterType());
         V_6 = this.transformer.Visit(constructorArguments.get_Item(V_5).Clone()) as Expression;
         this.initializerExpressions.get_Expressions().Add(new BinaryExpression(26, V_4, V_6, this.typeSystem, null, false));
         V_0 = V_0 + 1;
     }
     return;
 }
Пример #3
0
 public virtual void VisitAnonymousPropertyInitializerExpression(AnonymousPropertyInitializerExpression node)
 {
 }
Пример #4
0
 public ICodeNode VisitAnonymousPropertyInitializerExpression(AnonymousPropertyInitializerExpression node)
 {
     return(node);
 }