//------------------------------------------------------------------------------
//
//
// [....]
// 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;
}
}
}
}