CodeConstructor 类

定义

表示一个类型的实例构造函数的声明。Represents a declaration for an instance constructor of a type.

public ref class CodeConstructor : System::CodeDom::CodeMemberMethod
[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Serializable]
public class CodeConstructor : System.CodeDom.CodeMemberMethod
type CodeConstructor = class
    inherit CodeMemberMethod
Public Class CodeConstructor
Inherits CodeMemberMethod
继承
属性

示例

此示例演示CodeConstructor如何使用声明多种类型的构造函数。This example demonstrates using a CodeConstructor to declare several types of constructors.

// This example declares two types, one of which inherits from another,
// and creates a set of different styles of constructors using CodeConstructor.
// Creates a new CodeCompileUnit to contain the program graph.
CodeCompileUnit^ CompileUnit = gcnew CodeCompileUnit;

// Declares a new namespace object and names it.
CodeNamespace^ Samples = gcnew CodeNamespace( "Samples" );

// Adds the namespace object to the compile unit.
CompileUnit->Namespaces->Add( Samples );

// Adds a new namespace import for the System namespace.
Samples->Imports->Add( gcnew CodeNamespaceImport( "System" ) );

// Declares a new type and names it.
CodeTypeDeclaration^ BaseType = gcnew CodeTypeDeclaration( "BaseType" );

// Adds the new type to the namespace object's type collection.
Samples->Types->Add( BaseType );

// Declares a default constructor that takes no arguments.
CodeConstructor^ defaultConstructor = gcnew CodeConstructor;
defaultConstructor->Attributes = MemberAttributes::Public;

// Adds the constructor to the Members collection of the BaseType.
BaseType->Members->Add( defaultConstructor );

// Declares a constructor that takes a string argument.
CodeConstructor^ stringConstructor = gcnew CodeConstructor;
stringConstructor->Attributes = MemberAttributes::Public;

// Declares a parameter of type string named "TestStringParameter".
stringConstructor->Parameters->Add( gcnew CodeParameterDeclarationExpression( "System.String","TestStringParameter" ) );

// Adds the constructor to the Members collection of the BaseType.
BaseType->Members->Add( stringConstructor );

// Declares a type that derives from BaseType and names it.
CodeTypeDeclaration^ DerivedType = gcnew CodeTypeDeclaration( "DerivedType" );

// The DerivedType class inherits from the BaseType class.
DerivedType->BaseTypes->Add( gcnew CodeTypeReference( "BaseType" ) );

// Adds the new type to the namespace object's type collection.
Samples->Types->Add( DerivedType );

// Declare a constructor that takes a string argument and calls the base class constructor with it.
CodeConstructor^ baseStringConstructor = gcnew CodeConstructor;
baseStringConstructor->Attributes = MemberAttributes::Public;

// Declares a parameter of type string named "TestStringParameter".    
baseStringConstructor->Parameters->Add( gcnew CodeParameterDeclarationExpression( "System.String","TestStringParameter" ) );

// Calls a base class constructor with the TestStringParameter parameter.
baseStringConstructor->BaseConstructorArgs->Add( gcnew CodeVariableReferenceExpression( "TestStringParameter" ) );

// Adds the constructor to the Members collection of the DerivedType.
DerivedType->Members->Add( baseStringConstructor );

// Declares a constructor overload that calls another constructor for the type with a predefined argument.
CodeConstructor^ overloadConstructor = gcnew CodeConstructor;
overloadConstructor->Attributes = MemberAttributes::Public;

// Sets the argument to pass to a base constructor method.
overloadConstructor->ChainedConstructorArgs->Add( gcnew CodePrimitiveExpression( "Test" ) );

// Adds the constructor to the Members collection of the DerivedType.
DerivedType->Members->Add( overloadConstructor );

// Declares a constructor overload that calls the default constructor for the type.
CodeConstructor^ overloadConstructor2 = gcnew CodeConstructor;
overloadConstructor2->Attributes = MemberAttributes::Public;
overloadConstructor2->Parameters->Add( gcnew CodeParameterDeclarationExpression( "System.Int32","TestIntParameter" ) );

// Sets the argument to pass to a base constructor method.
overloadConstructor2->ChainedConstructorArgs->Add( gcnew CodeSnippetExpression( "" ) );

// Adds the constructor to the Members collection of the DerivedType.
DerivedType->Members->Add( overloadConstructor2 );

// A C# code generator produces the following source code for the preceeding example code:
// public class BaseType {
//     
//     public BaseType() {
//     }
//        
//     public BaseType(string TestStringParameter) {
//     }
// }
//    
// public class DerivedType : BaseType {
//        
//     public DerivedType(string TestStringParameter) : 
//             base(TestStringParameter) {
//     }
//        
//     public DerivedType() : 
//             this("Test") {
//     }
//
//     public DerivedType(int TestIntParameter) : 
//                this() {
//     }
// }
    // This example declares two types, one of which inherits from another,
    // and creates a set of different styles of constructors using CodeConstructor.

    // Creates a new CodeCompileUnit to contain the program graph.
    CodeCompileUnit CompileUnit = new CodeCompileUnit();
    // Declares a new namespace object and names it.
    CodeNamespace Samples = new CodeNamespace("Samples");
    // Adds the namespace object to the compile unit.
    CompileUnit.Namespaces.Add( Samples );
    // Adds a new namespace import for the System namespace.
    Samples.Imports.Add( new CodeNamespaceImport("System") );            
    
    // Declares a new type and names it.
    CodeTypeDeclaration BaseType = new CodeTypeDeclaration("BaseType");                                                
    // Adds the new type to the namespace object's type collection.
    Samples.Types.Add(BaseType);
    
    // Declares a default constructor that takes no arguments.
    CodeConstructor defaultConstructor = new CodeConstructor();
    defaultConstructor.Attributes = MemberAttributes.Public;
    // Adds the constructor to the Members collection of the BaseType.
    BaseType.Members.Add(defaultConstructor);

    // Declares a constructor that takes a string argument.
    CodeConstructor stringConstructor = new CodeConstructor();
    stringConstructor.Attributes = MemberAttributes.Public;
    // Declares a parameter of type string named "TestStringParameter".
    stringConstructor.Parameters.Add( new CodeParameterDeclarationExpression("System.String", "TestStringParameter") );
    // Adds the constructor to the Members collection of the BaseType.
    BaseType.Members.Add(stringConstructor);
                
    // Declares a type that derives from BaseType and names it.
    CodeTypeDeclaration DerivedType = new CodeTypeDeclaration("DerivedType");
    // The DerivedType class inherits from the BaseType class.
    DerivedType.BaseTypes.Add( new CodeTypeReference("BaseType") );
    // Adds the new type to the namespace object's type collection.
    Samples.Types.Add(DerivedType);        
            
    // Declare a constructor that takes a string argument and calls the base class constructor with it.
    CodeConstructor baseStringConstructor = new CodeConstructor();
    baseStringConstructor.Attributes = MemberAttributes.Public;
    // Declares a parameter of type string named "TestStringParameter".    
    baseStringConstructor.Parameters.Add( new CodeParameterDeclarationExpression("System.String", "TestStringParameter") );
    // Calls a base class constructor with the TestStringParameter parameter.
    baseStringConstructor.BaseConstructorArgs.Add( new CodeVariableReferenceExpression("TestStringParameter") );
    // Adds the constructor to the Members collection of the DerivedType.
    DerivedType.Members.Add(baseStringConstructor);
    
    // Declares a constructor overload that calls another constructor for the type with a predefined argument.
    CodeConstructor overloadConstructor = new CodeConstructor();
    overloadConstructor.Attributes = MemberAttributes.Public;
    // Sets the argument to pass to a base constructor method.
    overloadConstructor.ChainedConstructorArgs.Add( new CodePrimitiveExpression("Test") );
    // Adds the constructor to the Members collection of the DerivedType.
    DerivedType.Members.Add(overloadConstructor);        
    
    // Declares a constructor overload that calls the default constructor for the type.
    CodeConstructor overloadConstructor2 = new CodeConstructor();
    overloadConstructor2.Attributes = MemberAttributes.Public;
    overloadConstructor2.Parameters.Add( new CodeParameterDeclarationExpression("System.Int32", "TestIntParameter") );
    // Sets the argument to pass to a base constructor method.
    overloadConstructor2.ChainedConstructorArgs.Add( new CodeSnippetExpression("") );
    // Adds the constructor to the Members collection of the DerivedType.
    DerivedType.Members.Add(overloadConstructor2);            

    // A C# code generator produces the following source code for the preceeding example code:

    // public class BaseType {
    //     
    //     public BaseType() {
    //     }
    //        
    //     public BaseType(string TestStringParameter) {
    //     }
    // }
    //    
    // public class DerivedType : BaseType {
    //        
    //     public DerivedType(string TestStringParameter) : 
    //             base(TestStringParameter) {
    //     }
    //        
    //     public DerivedType() : 
    //             this("Test") {
    //     }
    //
    //     public DerivedType(int TestIntParameter) : 
    //                this() {
    //     }
    // }

 ' This example declares two types, one of which inherits from another,
 ' and creates a set of different styles of constructors using CodeConstructor.

 ' Creates a new CodeCompileUnit to contain the program graph.
 Dim CompileUnit As New CodeCompileUnit()
 ' Declares a new namespace object and names it.
 Dim Samples As New CodeNamespace("Samples")
 ' Adds the namespace object to the compile unit.
 CompileUnit.Namespaces.Add(Samples)
 ' Adds a new namespace import for the System namespace.
 Samples.Imports.Add(New CodeNamespaceImport("System"))
 
 ' Declares a new type and names it.
 Dim BaseType As New CodeTypeDeclaration("BaseType")
 ' Adds the new type to the namespace object's type collection.
 Samples.Types.Add(BaseType)
 
 ' Declares a default constructor that takes no arguments.
 Dim defaultConstructor As New CodeConstructor()
 defaultConstructor.Attributes = MemberAttributes.Public
 ' Adds the constructor to the Members collection of the BaseType.
 BaseType.Members.Add(defaultConstructor)
 
 ' Declares a constructor that takes a string argument.
 Dim stringConstructor As New CodeConstructor()
 stringConstructor.Attributes = MemberAttributes.Public
 ' Declares a parameter of type string named "TestStringParameter".
 stringConstructor.Parameters.Add(New CodeParameterDeclarationExpression("System.String", "TestStringParameter"))
 ' Adds the constructor to the Members collection of the BaseType.
 BaseType.Members.Add(stringConstructor)
 
 ' Declares a type that derives from BaseType and names it.
 Dim DerivedType As New CodeTypeDeclaration("DerivedType")
 ' The DerivedType class inherits from the BaseType class.
 DerivedType.BaseTypes.Add(New CodeTypeReference("BaseType"))
 ' Adds the new type to the namespace object's type collection.
 Samples.Types.Add(DerivedType)
 
 ' Declare a constructor that takes a string argument and calls the base class constructor with it.
 Dim baseStringConstructor As New CodeConstructor()
 baseStringConstructor.Attributes = MemberAttributes.Public
 ' Declares a parameter of type string named "TestStringParameter".	
 baseStringConstructor.Parameters.Add(New CodeParameterDeclarationExpression("System.String", "TestStringParameter"))
 ' Calls a base class constructor with the TestStringParameter parameter.
 baseStringConstructor.BaseConstructorArgs.Add(New CodeVariableReferenceExpression("TestStringParameter"))
 ' Adds the constructor to the Members collection of the DerivedType.
 DerivedType.Members.Add(baseStringConstructor)
 
 ' Declares a constructor overload that calls another constructor for the type with a predefined argument.
 Dim overloadConstructor As New CodeConstructor()
 overloadConstructor.Attributes = MemberAttributes.Public
 ' Sets the argument to pass to a base constructor method.
 overloadConstructor.ChainedConstructorArgs.Add(New CodePrimitiveExpression("Test"))
 ' Adds the constructor to the Members collection of the DerivedType.
 DerivedType.Members.Add(overloadConstructor)

 ' Declares a constructor overload that calls another constructor for the type.
 Dim overloadConstructor2 As New CodeConstructor()
 overloadConstructor2.Attributes = MemberAttributes.Public
 overloadConstructor2.Parameters.Add( New CodeParameterDeclarationExpression("System.Int32", "TestIntParameter") )
 ' Sets the argument to pass to a base constructor method.
 overloadConstructor2.ChainedConstructorArgs.Add(New CodeSnippetExpression(""))
 ' Adds the constructor to the Members collection of the DerivedType.
 DerivedType.Members.Add(overloadConstructor2)

' A Visual Basic code generator produces the following source code for the preceeding example code:

' Public Class BaseType
'     
'     Public Sub New()
'         MyBase.New
'     End Sub
'        
'     Public Sub New(ByVal TestStringParameter As String)
'         MyBase.New
'     End Sub
' End Class
'    
' Public Class DerivedType
'     Inherits BaseType
'        
'     Public Sub New(ByVal TestStringParameter As String)
'         MyBase.New(TestStringParameter)
'     End Sub
'     
'     Public Sub New()
'         Me.New("Test")
'     End Sub
'
'     Public Sub New(ByVal TestIntParameter As Integer)
'         Me.New()
'     End Sub
' End Class


注解

CodeConstructor可用于表示某个类型的实例构造函数的声明。CodeConstructor can be used to represent a declaration of an instance constructor for a type. 用于CodeTypeConstructor声明类型的静态构造函数。Use CodeTypeConstructor to declare a static constructor for a type.

如果构造函数调用基类构造函数, 请在BaseConstructorArgs属性中设置基类构造函数的构造函数参数。If the constructor calls a base class constructor, set the constructor arguments for the base class constructor in the BaseConstructorArgs property. 如果构造函数重载该类型的另一个构造函数, 请设置要传递给ChainedConstructorArgs属性中重载的类型构造函数的构造函数参数。If the constructor overloads another constructor for the type, set the constructor arguments to pass to the overloaded type constructor in the ChainedConstructorArgs property.

构造函数

CodeConstructor()

初始化 CodeConstructor 类的新实例。Initializes a new instance of the CodeConstructor class.

属性

Attributes

获取或设置成员的特性。Gets or sets the attributes of the member.

(继承自 CodeTypeMember)
BaseConstructorArgs

获取基构造函数参数的集合。Gets the collection of base constructor arguments.

ChainedConstructorArgs

获取链式构造函数参数的集合。Gets the collection of chained constructor arguments.

Comments

获取类型成员的注释集合。Gets the collection of comments for the type member.

(继承自 CodeTypeMember)
CustomAttributes

获取或设置成员的自定义特性。Gets or sets the custom attributes of the member.

(继承自 CodeTypeMember)
EndDirectives

获取成员的结束指令。Gets the end directives for the member.

(继承自 CodeTypeMember)
ImplementationTypes

获取由该方法实现的接口的数据类型,除非它是一个私有方法实现(这由 PrivateImplementationType 属性来指示)。Gets the data types of the interfaces implemented by this method, unless it is a private method implementation, which is indicated by the PrivateImplementationType property.

(继承自 CodeMemberMethod)
LinePragma

获取或设置类型成员语句所在的行。Gets or sets the line on which the type member statement occurs.

(继承自 CodeTypeMember)
Name

获取或设置成员名。Gets or sets the name of the member.

(继承自 CodeTypeMember)
Parameters

获取方法的参数声明。Gets the parameter declarations for the method.

(继承自 CodeMemberMethod)
PrivateImplementationType

获取或设置由此方法(如果是私有的)为其实现方法的接口的数据类型(如果有)。Gets or sets the data type of the interface this method, if private, implements a method of, if any.

(继承自 CodeMemberMethod)
ReturnType

获取或设置该方法的返回值的数据类型。Gets or sets the data type of the return value of the method.

(继承自 CodeMemberMethod)
ReturnTypeCustomAttributes

获取该方法的返回类型的自定义特性。Gets the custom attributes of the return type of the method.

(继承自 CodeMemberMethod)
StartDirectives

获取成员的开始指令。Gets the start directives for the member.

(继承自 CodeTypeMember)
Statements

获取该方法内的语句。Gets the statements within the method.

(继承自 CodeMemberMethod)
TypeParameters

获取当前泛型方法的类型参数。Gets the type parameters for the current generic method.

(继承自 CodeMemberMethod)
UserData

获取当前对象的用户可定义数据。Gets the user-definable data for the current object.

(继承自 CodeObject)

方法

Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetType()

获取当前实例的 TypeGets the Type of the current instance.

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
ToString()

返回表示当前对象的字符串。Returns a string that represents the current object.

(继承自 Object)

事件

PopulateImplementationTypes

在首次访问 ImplementationTypes 集合时将激发的事件。An event that will be raised the first time the ImplementationTypes collection is accessed.

(继承自 CodeMemberMethod)
PopulateParameters

在首次访问 Parameters 集合时将激发的事件。An event that will be raised the first time the Parameters collection is accessed.

(继承自 CodeMemberMethod)
PopulateStatements

在首次访问 Statements 集合时将激发的事件。An event that will be raised the first time the Statements collection is accessed.

(继承自 CodeMemberMethod)

适用于