//------------------------------------------------------------------------------ // <copyright file="codemethodreferenceexpression.cs" company="Microsoft"> // // <OWNER>[....]</OWNER> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> //------------------------------------------------------------------------------ namespace System.CodeDom { using System.Diagnostics; using System; using Microsoft.Win32; using System.Collections; using System.Runtime.InteropServices; using System.Runtime.Serialization; /// <devdoc> /// <para> /// Represents an /// expression to invoke a method, to be called on a given target. /// </para> /// </devdoc> [ ClassInterface(ClassInterfaceType.AutoDispatch), ComVisible(true), Serializable, ] public class CodeMethodReferenceExpression : CodeExpression { private CodeExpression targetObject; private string methodName; [OptionalField] private CodeTypeReferenceCollection typeArguments; /// <devdoc> /// <para> /// Initializes a new instance of <see cref='System.CodeDom.CodeMethodReferenceExpression'/>. /// </para> /// </devdoc> public CodeMethodReferenceExpression() { } /// <devdoc> /// <para> /// Initializes a new instance of <see cref='System.CodeDom.CodeMethodReferenceExpression'/> using the specified /// target object and method name. /// </para> /// </devdoc> public CodeMethodReferenceExpression(CodeExpression targetObject, string methodName) { TargetObject = targetObject; MethodName = methodName; } public CodeMethodReferenceExpression(CodeExpression targetObject, string methodName, params CodeTypeReference[] typeParameters) { TargetObject = targetObject; MethodName = methodName; if( typeParameters != null && typeParameters.Length > 0) { TypeArguments.AddRange(typeParameters); } } /// <devdoc> /// <para> /// Gets or sets the target object. /// </para> /// </devdoc> public CodeExpression TargetObject { get { return targetObject; } set { this.targetObject = value; } } /// <devdoc> /// <para> /// Gets or sets the name of the method to invoke. /// </para> /// </devdoc> public string MethodName { get { return (methodName == null) ? string.Empty : methodName; } set { methodName = value; } } [System.Runtime.InteropServices.ComVisible(false)] public CodeTypeReferenceCollection TypeArguments{ get { if( typeArguments == null) { typeArguments = new CodeTypeReferenceCollection(); } return typeArguments; } } } }