//------------------------------------------------------------------------------ // // // [....] // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.CodeDom { using System.Diagnostics; using System; using Microsoft.Win32; using System.Collections; using System.Runtime.InteropServices; using System.Runtime.Serialization; /// /// /// Represents a class method. /// /// [ ClassInterface(ClassInterfaceType.AutoDispatch), ComVisible(true), Serializable, ] public class CodeMemberMethod : CodeTypeMember { private CodeParameterDeclarationExpressionCollection parameters = new CodeParameterDeclarationExpressionCollection(); private CodeStatementCollection statements = new CodeStatementCollection(); private CodeTypeReference returnType; private CodeTypeReference privateImplements = null; private CodeTypeReferenceCollection implementationTypes = null; private CodeAttributeDeclarationCollection returnAttributes = null; [OptionalField] private CodeTypeParameterCollection typeParameters; private int populated = 0x0; private const int ParametersCollection = 0x1; private const int StatementsCollection = 0x2; private const int ImplTypesCollection = 0x4; /// /// /// An event that will be fired the first time the Parameters Collection is accessed. /// /// public event EventHandler PopulateParameters; /// /// /// An event that will be fired the first time the Statements Collection is accessed. /// /// public event EventHandler PopulateStatements; /// /// /// An event that will be fired the first time the ImplementationTypes Collection is accessed. /// /// public event EventHandler PopulateImplementationTypes; /// /// /// Gets or sets the return type of the method. /// /// public CodeTypeReference ReturnType { get { if (returnType == null) { returnType = new CodeTypeReference(typeof(void).FullName); } return returnType; } set { returnType = value; } } /// /// /// Gets or sets the statements within the method. /// /// public CodeStatementCollection Statements { get { if (0 == (populated & StatementsCollection)) { populated |= StatementsCollection; if (PopulateStatements != null) PopulateStatements(this, EventArgs.Empty); } return statements; } } /// /// /// Gets or sets the parameter declarations for the method. /// /// public CodeParameterDeclarationExpressionCollection Parameters { get { if (0 == (populated & ParametersCollection)) { populated |= ParametersCollection; if (PopulateParameters != null) PopulateParameters(this, EventArgs.Empty); } return parameters; } } /// /// [To be supplied.] /// public CodeTypeReference PrivateImplementationType { get { return privateImplements; } set { privateImplements = value; } } /// /// [To be supplied.] /// public CodeTypeReferenceCollection ImplementationTypes { get { if (implementationTypes == null) { implementationTypes = new CodeTypeReferenceCollection(); } if (0 == (populated & ImplTypesCollection)) { populated |= ImplTypesCollection; if (PopulateImplementationTypes != null) PopulateImplementationTypes(this, EventArgs.Empty); } return implementationTypes; } } /// /// [To be supplied.] /// public CodeAttributeDeclarationCollection ReturnTypeCustomAttributes { get { if (returnAttributes == null) { returnAttributes = new CodeAttributeDeclarationCollection(); } return returnAttributes; } } [System.Runtime.InteropServices.ComVisible(false)] public CodeTypeParameterCollection TypeParameters { get { if( typeParameters == null) { typeParameters = new CodeTypeParameterCollection(); } return typeParameters; } } } }