private void SerializeMethodInvocation(IDesignerSerializationManager manager, CodeStatementCollection statements, object control, string methodName, CodeExpressionCollection parameters, Type[] paramTypes, ControlCodeDomSerializer.StatementOrdering ordering)
 {
     {
         string name = manager.GetName(control);
         paramTypes = ControlCodeDomSerializer.ToTargetTypes(control, paramTypes);
         MethodInfo method = TypeDescriptor.GetReflectionType(control).GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public, null, paramTypes, null);
         if (method != null)
         {
             CodeExpression targetObject           = base.SerializeToExpression(manager, control);
             CodeMethodReferenceExpression method2 = new CodeMethodReferenceExpression(targetObject, methodName);
             CodeMethodInvokeExpression    codeMethodInvokeExpression = new CodeMethodInvokeExpression();
             codeMethodInvokeExpression.Method = method2;
             if (parameters != null)
             {
                 codeMethodInvokeExpression.Parameters.AddRange(parameters);
             }
             CodeExpressionStatement codeExpressionStatement = new CodeExpressionStatement(codeMethodInvokeExpression);
             if (ordering != ControlCodeDomSerializer.StatementOrdering.Prepend)
             {
                 if (ordering == ControlCodeDomSerializer.StatementOrdering.Append)
                 {
                     codeExpressionStatement.UserData["statement-ordering"] = "end";
                 }
             }
             else
             {
                 codeExpressionStatement.UserData["statement-ordering"] = "begin";
             }
             statements.Add(codeExpressionStatement);
         }
     }
 }
示例#2
0
 public PropertyBag(PropertyBagTest.ControlCodeDomSerializer serializer, IDesignerSerializationManager manager, object instance)
 {
     this.serializer   = serializer;
     this.manager      = manager;
     this.instance     = instance;
     this.instanceName = serializer.CustomGetUniqueName(manager, instance) ?? "undefined";
 }
 private static Type[] ToTargetTypes(object context, Type[] runtimeTypes)
 {
     Type[] array = new Type[runtimeTypes.Length];
     for (int i = 0; i < runtimeTypes.Length; i++)
     {
         array[i] = ControlCodeDomSerializer.ToTargetType(context, runtimeTypes[i]);
     }
     return(array);
 }