CodeMemberField.InitExpression Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur ekspresi inisialisasi untuk bidang .
public:
property System::CodeDom::CodeExpression ^ InitExpression { System::CodeDom::CodeExpression ^ get(); void set(System::CodeDom::CodeExpression ^ value); };
public System.CodeDom.CodeExpression InitExpression { get; set; }
member this.InitExpression : System.CodeDom.CodeExpression with get, set
Public Property InitExpression As CodeExpression
Nilai Properti
Ekspresi inisialisasi untuk bidang .
Contoh
Contoh berikut menunjukkan penggunaan InitExpression properti .
using System;
using System.Reflection;
using System.IO;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
namespace SampleCodeDom
{
/// <summary>
/// This code example creates a graph using a CodeCompileUnit and
/// generates source code for the graph using the CSharpCodeProvider.
/// </summary>
class Sample
{
/// <summary>
/// Define the compile unit to use for code generation.
/// </summary>
CodeCompileUnit targetUnit;
/// <summary>
/// The only class in the compile unit.
/// </summary>
CodeTypeDeclaration targetClass;
/// <summary>
/// The name of the file to contain the source code.
/// </summary>
private const string outputFileName = "SampleCode.cs";
/// <summary>
/// Define the class.
/// </summary>
public Sample()
{
targetUnit = new CodeCompileUnit();
CodeNamespace samples = new CodeNamespace("CodeDOMSample");
samples.Imports.Add(new CodeNamespaceImport("System"));
targetClass = new CodeTypeDeclaration("CodeDOMCreatedClass");
targetClass.IsClass = true;
targetClass.TypeAttributes =
TypeAttributes.Public | TypeAttributes.Sealed;
samples.Types.Add(targetClass);
targetUnit.Namespaces.Add(samples);
}
/// <summary>
/// Adds a field to the class.
/// </summary>
public void AddField()
{
CodeMemberField testField = new CodeMemberField();
testField.Name = "today";
testField.Type = new CodeTypeReference(typeof(System.DateTime));
testField.Attributes = MemberAttributes.Private | MemberAttributes.Static;
testField.InitExpression =
new CodeFieldReferenceExpression(new CodeTypeReferenceExpression("System.DateTime"), "Today");
targetClass.Members.Add(testField);
}
/// <summary>
/// Add a constructor to the class.
/// </summary>
public void AddConstructor()
{
// Declare the constructor
CodeConstructor constructor = new CodeConstructor();
constructor.Attributes =
MemberAttributes.Public | MemberAttributes.Final;
targetClass.Members.Add(constructor);
}
/// <summary>
/// Add an entry point to the class.
/// </summary>
public void AddEntryPoint()
{
CodeEntryPointMethod start = new CodeEntryPointMethod();
CodeObjectCreateExpression objectCreate =
new CodeObjectCreateExpression(
new CodeTypeReference("CodeDOMCreatedClass"));
// Add the statement:
// "CodeDOMCreatedClass testClass =
// new CodeDOMCreatedClass();"
start.Statements.Add(new CodeVariableDeclarationStatement(
new CodeTypeReference("CodeDOMCreatedClass"), "testClass",
objectCreate));
// Creat the expression:
// "testClass.ToString()"
CodeMethodInvokeExpression toStringInvoke =
new CodeMethodInvokeExpression(
new CodeVariableReferenceExpression("today"), "ToString");
// Add a System.Console.WriteLine statement with the previous
// expression as a parameter.
start.Statements.Add(new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression("System.Console"),
"WriteLine", toStringInvoke));
targetClass.Members.Add(start);
}
/// <summary>
/// Generate CSharp source code from the compile unit.
/// </summary>
/// <param name="filename">Output file name</param>
public void GenerateCSharpCode(string fileName)
{
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BracingStyle = "C";
using (StreamWriter sourceWriter = new StreamWriter(fileName))
{
provider.GenerateCodeFromCompileUnit(
targetUnit, sourceWriter, options);
}
}
/// <summary>
/// Create the CodeDOM graph and generate the code.
/// </summary>
static void Main()
{
Sample sample = new Sample();
sample.AddField();
sample.AddConstructor();
sample.AddEntryPoint();
sample.GenerateCSharpCode(outputFileName);
}
}
}
// A C# code generator produces the following source code for the preceeding example code:
//namespace CodeDOMSample
//{
// using System;
// public sealed class CodeDOMCreatedClass
// {
// private static System.DateTime today = System.DateTime.Today;
// public CodeDOMCreatedClass()
// {
// }
// public static void Main()
// {
// CodeDOMCreatedClass testClass = new CodeDOMCreatedClass();
// System.Console.WriteLine(today.ToString());
// }
// }
//}
Imports System.Reflection
Imports System.IO
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports Microsoft.CSharp
'/ <summary>
'/ This code example creates a graph using a CodeCompileUnit and
'/ generates source code for the graph using the CSharpCodeProvider.
'/ </summary>
Class Sample
'/ <summary>
'/ Define the compile unit to use for code generation.
'/ </summary>
Private targetUnit As CodeCompileUnit
'/ <summary>
'/ The only class in the compile unit.
'/ </summary>
Private targetClass As CodeTypeDeclaration
'/ <summary>
'/ The name of the file to contain the source code.
'/ </summary>
Private Const outputFileName As String = "SampleCode.vb"
'/ <summary>
'/ Define the class.
'/ </summary>
Public Sub New()
targetUnit = New CodeCompileUnit()
Dim samples As New CodeNamespace("CodeDOMSample")
samples.Imports.Add(New CodeNamespaceImport("System"))
targetClass = New CodeTypeDeclaration("CodeDOMCreatedClass")
targetClass.IsClass = True
targetClass.TypeAttributes = TypeAttributes.Public Or TypeAttributes.Sealed
samples.Types.Add(targetClass)
targetUnit.Namespaces.Add(samples)
End Sub
'/ <summary>
'/ Adds a field to the class.
'/ </summary>
Public Sub AddField()
Dim testField As New CodeMemberField()
testField.Name = "today"
testField.Type = New CodeTypeReference(GetType(System.DateTime))
testField.Attributes = MemberAttributes.Private Or MemberAttributes.Static
testField.InitExpression = New CodeFieldReferenceExpression(New CodeTypeReferenceExpression("System.DateTime"), "Today")
targetClass.Members.Add(testField)
End Sub
'/ <summary>
'/ Add a constructor to the class.
'/ </summary>
Public Sub AddConstructor()
' Declare the constructor
Dim constructor As New CodeConstructor()
constructor.Attributes = MemberAttributes.Public Or MemberAttributes.Final
targetClass.Members.Add(constructor)
End Sub
'/ <summary>
'/ Add an entry point to the class.
'/ </summary>
Public Sub AddEntryPoint()
Dim start As New CodeEntryPointMethod()
Dim objectCreate As New CodeObjectCreateExpression(New CodeTypeReference("CodeDOMCreatedClass"))
' Add the statement:
' "CodeDOMCreatedClass testClass =
' new CodeDOMCreatedClass();"
start.Statements.Add(New CodeVariableDeclarationStatement(New CodeTypeReference("CodeDOMCreatedClass"), "testClass", objectCreate))
' Creat the expression:
' "testClass.ToString()"
Dim toStringInvoke As New CodeMethodInvokeExpression(New CodeVariableReferenceExpression("today"), "ToString")
' Add a System.Console.WriteLine statement with the previous
' expression as a parameter.
start.Statements.Add(New CodeMethodInvokeExpression(New CodeTypeReferenceExpression("System.Console"), "WriteLine", toStringInvoke))
targetClass.Members.Add(start)
End Sub
'/ <summary>
'/ Generate CSharp source code from the compile unit.
'/ </summary>
'/ <param name="filename">Output file name</param>
Public Sub GenerateCSharpCode(ByVal fileName As String)
Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("VB")
Dim options As New CodeGeneratorOptions()
Dim sourceWriter As New StreamWriter(fileName)
Try
provider.GenerateCodeFromCompileUnit(targetUnit, sourceWriter, options)
Finally
sourceWriter.Dispose()
End Try
End Sub
'/ <summary>
'/ Create the CodeDOM graph and generate the code.
'/ </summary>
Shared Sub Main()
Dim sample As New Sample()
sample.AddField()
sample.AddConstructor()
sample.AddEntryPoint()
sample.GenerateCSharpCode(outputFileName)
End Sub
End Class
' A Visual Basic code generator produces the following source code for the preceeding example code:
'Option Strict Off
'Option Explicit On
''Namespace CodeDOMSample
' Public NotInheritable Class CodeDOMCreatedClass
' Private Shared today As Date = Date.Today
' Public Sub New()
' MyBase.New()
' End Sub
' Public Shared Sub Main()
' Dim testClass As CodeDOMCreatedClass = New CodeDOMCreatedClass
' System.Console.WriteLine(today.ToString)
' End Sub
' End Class
'End Namespace
Berlaku untuk
Lihat juga
Berkolaborasi dengan kami di GitHub
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.