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); } } }
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); }