e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
165 lines
5.6 KiB
C#
165 lines
5.6 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="CodeMemberMethod.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 a class method.
|
|
/// </para>
|
|
/// </devdoc>
|
|
[
|
|
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;
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// An event that will be fired the first time the Parameters Collection is accessed.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public event EventHandler PopulateParameters;
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// An event that will be fired the first time the Statements Collection is accessed.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public event EventHandler PopulateStatements;
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// An event that will be fired the first time the ImplementationTypes Collection is accessed.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public event EventHandler PopulateImplementationTypes;
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// Gets or sets the return type of the method.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public CodeTypeReference ReturnType {
|
|
get {
|
|
if (returnType == null) {
|
|
returnType = new CodeTypeReference(typeof(void).FullName);
|
|
}
|
|
return returnType;
|
|
}
|
|
set {
|
|
returnType = value;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// Gets or sets the statements within the method.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public CodeStatementCollection Statements {
|
|
get {
|
|
if (0 == (populated & StatementsCollection)) {
|
|
populated |= StatementsCollection;
|
|
if (PopulateStatements != null) PopulateStatements(this, EventArgs.Empty);
|
|
}
|
|
return statements;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>
|
|
/// Gets or sets the parameter declarations for the method.
|
|
/// </para>
|
|
/// </devdoc>
|
|
public CodeParameterDeclarationExpressionCollection Parameters {
|
|
get {
|
|
if (0 == (populated & ParametersCollection)) {
|
|
populated |= ParametersCollection;
|
|
if (PopulateParameters != null) PopulateParameters(this, EventArgs.Empty);
|
|
}
|
|
return parameters;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>[To be supplied.]</para>
|
|
/// </devdoc>
|
|
public CodeTypeReference PrivateImplementationType {
|
|
get {
|
|
return privateImplements;
|
|
}
|
|
set {
|
|
privateImplements = value;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>[To be supplied.]</para>
|
|
/// </devdoc>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <devdoc>
|
|
/// <para>[To be supplied.]</para>
|
|
/// </devdoc>
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|