
フィードバック編集言語C#VB 03/30/2017 18分の読者貢献者すべて次の手順では、2つのフィールド、3つのプロパティ、メソッド、コンストラクタ、およびエントリポイントを含むクラスを生成するCodeDOMグラフを作成してコンパイルする方法を示します.
CodeDOMコードを使用してクラスのソースコードを生成するコンソールアプリケーションを作成する.
この例では、生成クラスの名前はSampleであり、生成コードはSampleCodeという名前のファイルのCodeDOMCreatedClassという名前のクラスです.
生成クラスでは、CodeDOMグラフを初期化し、CodeDOMメソッドを使用して、生成されたクラスのメンバー、コンストラクタ、およびエントリポイント(Mainメソッド)を定義します.
この例では、生成されたクラスに2つのフィールド、3つのプロパティ、コンストラクタ、メソッド、およびMainメソッドがあります.
生成クラスでは、言語固有のコードプロバイダを作成し、GenerateCodeFromCompileUnitメソッドを呼び出してグラフからコードを生成します.
この例では、生成されたコードはSampleCodeという名前のファイルにあります.
CodeDOMコードを実行するアプリケーションを作成するには
CodeDOMコードを格納するコンソールアプリケーションクラスを作成する. アセンブリ(CodeCompileUnit)およびクラス(CodeTypeDeclaration)を参照するためにクラスで使用されるグローバルフィールドを定義し、生成されたソースファイルの名前を指定し、Mainメソッドを宣言します. Cシャープ;名前空間SampleCodeDom
{クラスサンプル{CodeCompileUnit targetUnit; CodeTypeDeclaration targetClass;プライベートconst文字列outputFileName = "SampleCode. cs "; static void Main(string [] args){}}
}
輸入システム
輸入システム. CSharpクラスのサンプルPrivate targetUnitとしてCodeCompileUnitプライベートtargetClassとしてCodeTypeDeclaration Private Const outputFileName As String = "SampleCode. vb "Shared Sub Main(ByVal args()As String)End Sub&Main
エンド・クラスのサンプル
CodeDOMグラフを初期化するには
コンソールアプリケーションクラスのコンストラクタで、アセンブリとクラスを初期化し、適切な宣言をCodeDOMグラフに追加します.
public Sample()
{targetUnit = new CodeCompileUnit(); CodeNamespace samples =新しいCodeNamespace( "CodeDOMSample");サンプル. 追加(新しいCodeNamespaceImport( "System")); targetClass =新しいCodeTypeDeclaration( "CodeDOMCreatedClass"); targetClass.
維生素d 生成 クラス図 書き方 きれい
追加(サンプル)。
}
Public Sub New()targetUnit = New CodeCompileUnit()サンプルを新しいCodeNamespace( "CodeDOMSample")としてサンプルを薄くします. 追加(New CodeNamespaceImport( "System"))targetClass =新しいCodeTypeDeclaration( "CodeDOMCreatedClass")targetClass. Add(samples)End Sub 'New
CodeDOMグラフにメンバーを追加するには
クラスのメンバプロパティにCodeMemberFieldオブジェクトを追加して、CodeDOMグラフにフィールドを追加する.
public void AddFields()
{// widthValueフィールドを宣言する. CodeMemberField widthValueField =新しいCodeMemberField(); widthValueField. Type = new CodeTypeReference(typeof(System. 追加(widthValueField); // heightValueフィールドを宣言します。CodeMemberField heightValueField = new CodeMemberField(); heightValueField. Type = new CodeTypeReference(typeof(System. 追加(heightValueField);
}
Public Sub AddFields()' widthValueフィールドを宣言します。. Dim widthValueFieldとして新しいCodeMemberField()widthValueField. タイプ= _新しいCodeTypeReference(GetType(System. 追加(widthValueField)' heightValueフィールドを宣言します。Dim heightValueField As New CodeMemberField()heightValueField. タイプ= _新しいCodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトの高さ.
維生素d 生成 クラス図 書き方 見本
Add(heightValueField)End Sub 'AddFields
クラスのメンバプロパティにCodeMemberPropertyオブジェクトを追加して、CodeDOMグラフにプロパティを追加します。.
public void AddProperties()
{//読み取り専用のWidthプロパティを宣言します. CodeMemberProperty widthProperty =新しいCodeMemberProperty(); widthプロパティ. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのWidthプロパティ. 追加(新しいCodeMethodReturnStatement(新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "widthValue")))); targetClass. 追加(widthProperty); //読み取り専用Heightプロパティを宣言する. CodeMemberProperty heightProperty =新しいCodeMemberProperty(); heightProperty. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのHeightプロパティ. 追加(新しいCodeMethodReturnStatement(新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue")))); targetClass.
維生素d 生成 クラス図 書き方 ソフト
追加(heightProperty); //読み取り専用のAreaプロパティを宣言します。. CodeMemberProperty areaProperty =新しいCodeMemberProperty(); areaProperty. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのAreaプロパティ. ")); // Areaプロパティのgetアクセサまたは//の面積を計算する式を作成する. CodeBinaryOperatorExpression = new CodeBinaryOperatorExpression(new CodeThisReferenceExpression()、 "widthValue")、CodeBinaryOperatorType. 乗算、新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue")); areaProperty. 追加(新しいCodeMethodReturnStatement(areaExpression)); targetClass. 追加(areaProperty);
}
Public Sub AddProperties()'読み取り専用Widthプロパティを宣言する. Dim widthProperty As New CodeMemberProperty()widthProperty. Type = New CodeTypeReference(GetType(System. Add(New CodeCommentStatement(_ "オブジェクトのwidthプロパティ. 追加(新しいCodeMethodReturnStatement(_新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "widthValue"))))targetClass. Add(widthProperty)'読み取り専用Heightプロパティを宣言する. Dim heightProperty As New CodeMemberProperty()heightProperty.
維生素d 生成 クラス図 書き方 さんへ
Type = New CodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトのHeightプロパティ. 追加(新しいCodeMethodReturnStatement(_新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "heightValue"))))targetClass. Add(heightProperty)'読み取り専用のAreaプロパティを宣言する. Dim AreaProperty As New CodeMemberProperty()areaProperty. Type = New CodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトのAreaプロパティ. "))' Areaプロパティのgetアクセサの領域を計算するための式を作成する. 新しいCodeBinaryOperatorExpression(_新しいCodeThisReferenceExpression()、 "widthValue")、_ CodeBinaryOperatorType. Multiply、_新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue"))areaProperty. 追加(_ New CodeMethodReturnStatement(areaExpression))targetClass. Add(areaProperty)End Sub&AddProperties
クラスのメンバプロパティにCodeMemberMethodオブジェクトを追加して、CodeDOMグラフにメソッドを追加する.
public void AddMethod()
{// ToStringメソッドを宣言するCodeMemberMethod toStringMethod = new CodeMemberMethod(); toStringMethod. ReturnType = new CodeTypeReference(typeof(System.
維生素d 生成 クラス図 書き方 横書き
文字列)); CodeFieldReferenceExpression widthReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression()、 "Width"); CodeFieldReferenceExpression高さ参照=新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "高さ"); CodeFieldReferenceExpression areaReference = new CodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "Area"); // ToStringメソッドのreturn文を宣言する. CodeMethodReturnStatement returnStatement =新しいCodeMethodReturnStatement(); //この文は、幅、//高さ、および領域の文字列表現を返します. 式=新しいCodeMethodInvokeExpression(新しいCodeTypeReferenceExpression( "System. String ")、" Format "、新しいCodePrimitiveExpression(formattedOutput)、widthReference、heightReference、areaReference); toStringMethod. 追加(toStringMethod);
}
Public Sub AddMethod()' ToStringメソッドの宣言. Dim toStringMethodとして新しいCodeMemberMethod()toStringMethod. ReturnType = _新しいCodeTypeReference(GetType(System. (New CodeThisReferenceExpression()、 "Height")新規のCodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 "Area")のように、新しいCodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 " ) ' ToStringメソッドのreturn文の宣言. Dim returnStatementとして新しいCodeMethodReturnStatement()'このステートメントは、幅の文字列表現を返します。高さ、面積. Dim formattedOutput As String = "オブジェクト:"&Environment. 式=新しいCodeMethodInvokeExpression(_新しいCodeTypeReferenceExpression( "システム. String)」、「書式」、_新しいCodePrimitiveExpression(書式付き出力)、widthReference、_ heightReference、areaReference)toStringMethod. Add(toStringMethod)End Sub' AddMethod
クラスのメンバプロパティにCodeConstructorオブジェクトを追加して、CodeDOMグラフにコンストラクタを追加します。.
public void AddConstructor()
{//コンストラクタを宣言します。CodeConstructorコンストラクタ= new CodeConstructor();コンストラクタ.
維生素d 生成 クラス図 書き方 見本
追加(新しいCodeParameterDeclarationExpression(typeof(System. 追加(新しいCodeParameterDeclarationExpression(typeof(System. ダブル)、 "高さ")); //フィールド初期化ロジックを追加CodeFieldReferenceExpression widthReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression()、 "widthValue");コンストラクタ. 追加(新しいCodeAssignStatement(widthReference、新しいCodeArgumentReferenceExpression( "width"))); CodeFieldReferenceExpression高さ参照=新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue");コンストラクタ. 追加(新しいCodeAssignStatement(heightReference、新しいCodeArgumentReferenceExpression( "height"))); targetClass. 追加(コンストラクタ)。
}
Public Sub AddConstructor()'新しいコンストラクタDimコンストラクタを新しいCodeConstructorコンストラクタとして宣言します。. Add(_新しいCodeParameterDeclarationExpression(_ GetType(System. Add(_新しいCodeParameterDeclarationExpression(_ GetType(System. ダブル)、「高さ」)) 'フィールド初期化ロジックを追加するDim widthReference As New CodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 "widthValue")コンストラクタ. 新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "heightValue")コンストラクタとして、新しいCodeAssignStatement(_ widthReference、新しいCodeArgumentReferenceExpression( "width")). Add(_新しいCodeAssignStatement(heightReference、_新しいCodeArgumentReferenceExpression( "height")))targetClass. Add(コンストラクタ)End Sub&AddConstructor
クラスのメンバプロパティにCodeEntryPointMethodオブジェクトを追加して、CodeDOMグラフにエントリポイントを追加します。.
public void AddEntryPoint()
{CodeEntryPointMethod start =新しいCodeEntryPointMethod(); CodeObjectCreateExpression objectCreate = new CodeObjectCreateExpression(新しいCodeTypeReference( "CodeDOMCreatedClass")、新しいCodePrimitiveExpression(5. 9)); //ステートメントを追加します。// "CodeDOMCreatedClass testClass = //新しいCodeDOMCreatedClass(5. 追加(新しいCodeVariableDeclarationStatement(新しいCodeTypeReference( "CodeDOMCreatedClass")、 "testClass"、objectCreate)); //式を作成する:// "testClass.
維生素d 生成 クラス図 書き方 ゆうちょ
ToString() "; CodeMethodInvokeExpression toStringInvoke = new CodeMethodInvokeExpression(new CodeVariableReferenceExpression(" testClass ");" ToString "); //システムを追加する. Add(新しいCodeMethodInvokeExpression(新しいCodeTypeReferenceExpression( "System. コンソール ")、" WriteLine "、toStringInvoke)); targetClass. 追加(開始);
}
新しいCodeObjectCreateExpression(_新しいCodeTypeReference( "CodeDOMCreatedClass")、_新しいCodePrimitiveExpression(5)のように暗い開始として新しいCodeEntryPointMethod(). 9)) 'ステートメントを追加:' "CodeDOMCreatedClass testClass = _'新しいCodeDOMCreatedClass(5. Add(新しいCodeVariableDeclarationStatement(新しいCodeTypeReference( "CodeDOMCreatedClass")、_ "testClass"、objectCreate))'式を作成する:' "testClass. 新しいCodeMethodInvokeExpression(_新しいCodeVariableReferenceExpression( "testClass")、 "ToString")'システムを追加する. 追加(新しいCodeMethodInvokeExpression(_新しいCodeTypeReferenceExpression( "システム. コンソール ")、_" WriteLine "、toStringInvoke))targetClass. Add(start)End Sub& 'AddEntryPoint
CodeDOMグラフからコードを生成するには
GenerateCodeFromCompileUnitメソッドを呼び出して、CodeDOMグラフからソースコードを生成します。.
public void GenerateCSharpCode(string fileName)
{CodeDomProvider provider = CodeDomProvider. CreateProvider( "CSharp"); CodeGeneratorOptions options = new CodeGeneratorOptions();オプション. BracingStyle = "C"; using(StreamWriter sourceWriter = new StreamWriter(fileName)){provider. GenerateCodeFromCompileUnit(targetUnit、sourceWriter、options); }
}
パブリックSub GenerateVBCode(ByVal fileName As String)Dim Provider As CodeDomProvider provider = CodeDomProvider. CreateProvider( "VisualBasic")Dimオプションとして新規CodeGeneratorOptions()Dim SourceWriter As New StreamWriter(fileName)プロバイダを試してください.
維生素d 生成 クラス図 書き方 横書き
GenerateCodeFromCompileUnit(_ targetUnit、sourceWriter、options)最後にsourceWriter. Dispose()End Try End Sub' GenerateVBCode
グラフを作成してコードを生成するには
前の手順で作成したメソッドを、最初の手順で定義したMainメソッドに追加します.
static void Main()
{サンプルサンプル=新しいサンプル();サンプル. GenerateCSharpCode(outputFileName);
}
Shared Sub Main()Dimサンプルas新しいSample()サンプル. GenerateVBCode(outputFileName)End Sub&Main
エンド・クラスのサンプル
生成クラスをコンパイルして実行する. Cシャープ;名前空間SampleCodeDom
{/// ///このコード例は、CodeCompileUnitを使用してグラフを作成し、///グラフのソースコードをCSharpCodeProvider. /// class Sample {/// ///コード生成に使用するコンパイル単位を定義します. /// CodeCompileUnit targetUnit; ///コンパイル単位の唯一のクラス. このクラスには、2つのフィールド、/// 3プロパティ、コンストラクタ、エントリポイント、および1つの簡単なメソッドが含まれます. /// CodeTypeDeclaration targetClass; /// ///ソースコードを含むファイルの名前. /// private const string outputFileName = "SampleCode. /// public Sample(){targetUnit = new CodeCompileUnit(); CodeNamespace samples =新しいCodeNamespace( "CodeDOMSample");サンプル. 追加(新しいCodeNamespaceImport( "System")); targetClass =新しいCodeTypeDeclaration( "CodeDOMCreatedClass"); targetClass. /// public void AddFields(){// widthValueフィールドを宣言します。. CodeMemberField widthValueField =新しいCodeMemberField(); widthValueField. Type = new CodeTypeReference(typeof(System.
維生素d 生成 クラス図 書き方 さんへ
追加(widthValueField); // heightValueフィールドを宣言します。CodeMemberField heightValueField = new CodeMemberField(); heightValueField. Type = new CodeTypeReference(typeof(System. 追加(heightValueField); } /// ///クラスに3つのプロパティを追加する. /// public void AddProperties(){//読み取り専用のWidthプロパティを宣言します。. CodeMemberProperty widthProperty =新しいCodeMemberProperty(); widthプロパティ. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのWidthプロパティ. 追加(新しいCodeMethodReturnStatement(新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "widthValue")))); targetClass. 追加(widthProperty); //読み取り専用Heightプロパティを宣言する. CodeMemberProperty heightProperty =新しいCodeMemberProperty(); heightProperty. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのHeightプロパティ. 追加(新しいCodeMethodReturnStatement(新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue")))); targetClass. 追加(heightProperty); //読み取り専用のAreaプロパティを宣言します。.
維生素d 生成 クラス図 書き方 わかりやすい
CodeMemberProperty areaProperty =新しいCodeMemberProperty(); areaProperty. Type = new CodeTypeReference(typeof(System. Add(新しいCodeCommentStatement( "オブジェクトのAreaプロパティ. ")); // Areaプロパティのgetアクセサまたは//の面積を計算する式を作成する. CodeBinaryOperatorExpression = new CodeBinaryOperatorExpression(new CodeThisReferenceExpression()、 "widthValue")、CodeBinaryOperatorType. 乗算、新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue")); areaProperty. 追加(新しいCodeMethodReturnStatement(areaExpression)); targetClass. 追加(areaProperty); } /// ///クラスにメソッドを追加します。. /// public void AddMethod(){// ToStringメソッドを宣言します。CodeMemberMethod toStringMethod = new CodeMemberMethod(); toStringMethod. ReturnType = new CodeTypeReference(typeof(System. 文字列)); CodeFieldReferenceExpression widthReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression()、 "Width"); CodeFieldReferenceExpression高さ参照=新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "高さ"); CodeFieldReferenceExpression areaReference = new CodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "Area"); // ToStringメソッドのreturn文を宣言する. CodeMethodReturnStatement returnStatement =新しいCodeMethodReturnStatement(); //この文は、幅、//高さ、および領域の文字列表現を返します. 式=新しいCodeMethodInvokeExpression(新しいCodeTypeReferenceExpression( "System. String ")、" Format "、新しいCodePrimitiveExpression(formattedOutput)、widthReference、heightReference、areaReference); toStringMethod. 追加(toStringMethod); } /// ///クラスにコンストラクタを追加する.
維生素d 生成 クラス図 書き方 ツナグ
/// public void AddConstructor(){//コンストラクタを宣言します。CodeConstructorコンストラクタ= new CodeConstructor();コンストラクタ. 追加(新しいCodeParameterDeclarationExpression(typeof(System. 追加(新しいCodeParameterDeclarationExpression(typeof(System. ダブル)、 "高さ")); //フィールド初期化ロジックを追加CodeFieldReferenceExpression widthReference = new CodeFieldReferenceExpression(new CodeThisReferenceExpression()、 "widthValue");コンストラクタ. 追加(新しいCodeAssignStatement(widthReference、新しいCodeArgumentReferenceExpression( "width"))); CodeFieldReferenceExpression高さ参照=新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue");コンストラクタ. 追加(新しいCodeAssignStatement(heightReference、新しいCodeArgumentReferenceExpression( "height"))); targetClass. /// public void AddEntryPoint(){CodeEntryPointMethod start =新しいCodeEntryPointMethod(); CodeObjectCreateExpression objectCreate = new CodeObjectCreateExpression(新しいCodeTypeReference( "CodeDOMCreatedClass")、新しいCodePrimitiveExpression(5. 9)); //ステートメントを追加します。// "CodeDOMCreatedClass testClass = //新しいCodeDOMCreatedClass(5. 追加(新しいCodeVariableDeclarationStatement(新しいCodeTypeReference( "CodeDOMCreatedClass")、 "testClass"、objectCreate)); //式を作成する:// "testClass. ToString() "; CodeMethodInvokeExpression toStringInvoke = new CodeMethodInvokeExpression(new CodeVariableReferenceExpression(" testClass ");" ToString "); //システムを追加する. Add(新しいCodeMethodInvokeExpression(新しいCodeTypeReferenceExpression( "System. コンソール ")、" WriteLine "、toStringInvoke)); targetClass. 追加(開始); } /// ///コンパイルユニットからCSharpソースコードを生成する. ///出力ファイル名public void GenerateCSharpCode(string fileName){CodeDomProvider provider = CodeDomProvider.
維生素d 生成 クラス図 書き方 ゆうちょ
CreateProvider( "CSharp"); CodeGeneratorOptions options = new CodeGeneratorOptions();オプション. BracingStyle = "C"; using(StreamWriter sourceWriter = new StreamWriter(fileName)){provider. GenerateCodeFromCompileUnit(targetUnit、sourceWriter、options); }} /// /// CodeDOMグラフを作成し、コードを生成する. /// static void Main(){サンプルサンプル=新しいサンプル();サンプル. GenerateCSharpCode(outputFileName); }}
}
輸入システム
輸入システム. VisualBasic'このコード例は、CodeCompileUnitと'を使用してグラフを作成します。 VBCodeProviderを使用してグラフのソースコードを生成します。. プライベートtargetUnit As CodeCompileUnit'コンパイル単位の唯一のクラス. このクラスは、2つのフィールド、' 3つのプロパティ、コンストラクタ、エントリポイント、および1つの簡単なメソッド. プライベートtargetClass As CodeTypeDeclaration'ソースコードを格納するファイルの名前. Private Const outputFileName As String = "SampleCode. Public Sub New()targetUnit = New CodeCompileUnit()サンプルを新しいCodeNamespace( "CodeDOMSample")としてサンプルを薄くします. 追加(New CodeNamespaceImport( "System"))targetClass =新しいCodeTypeDeclaration( "CodeDOMCreatedClass")targetClass.
維生素d 生成 クラス図 書き方 さいたま市
追加(サンプル)End Sub 'New'クラスに2つのフィールドを追加します。. Public Sub AddFields()' widthValueフィールドを宣言します。. Dim widthValueFieldとして新しいCodeMemberField()widthValueField. タイプ= _新しいCodeTypeReference(GetType(System. 追加(widthValueField)' heightValueフィールドを宣言します。Dim heightValueField As New CodeMemberField()heightValueField. タイプ= _新しいCodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトの高さ. Add(heightValueField)End Sub' AddFields'クラスに3つのプロパティを追加する. Public Sub AddProperties()'読み取り専用Widthプロパティを宣言する. Dim widthProperty As New CodeMemberProperty()widthProperty. Type = New CodeTypeReference(GetType(System. Add(New CodeCommentStatement(_ "オブジェクトのwidthプロパティ. 追加(新しいCodeMethodReturnStatement(_新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "widthValue"))))targetClass. Add(widthProperty)'読み取り専用Heightプロパティを宣言する.
維生素d 生成 クラス図 書き方 ゆうパック
Dim heightProperty As New CodeMemberProperty()heightProperty. Type = New CodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトのHeightプロパティ. 追加(新しいCodeMethodReturnStatement(_新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "heightValue"))))targetClass. Add(heightProperty)'読み取り専用のAreaプロパティを宣言する. Dim AreaProperty As New CodeMemberProperty()areaProperty. Type = New CodeTypeReference(GetType(System. Add(新しいCodeCommentStatement(_ "オブジェクトのAreaプロパティ. "))' Areaプロパティのgetアクセサの領域を計算するための式を作成する. 新しいCodeBinaryOperatorExpression(_新しいCodeThisReferenceExpression()、 "widthValue")、_ CodeBinaryOperatorType. Multiply、_新しいCodeFieldReferenceExpression(新しいCodeThisReferenceExpression()、 "heightValue"))areaProperty. 追加(_ New CodeMethodReturnStatement(areaExpression))targetClass.
維生素d 生成 クラス図 書き方 さんへ
Add(areaProperty)End Sub' AddProperties'クラスにメソッドを追加します。. Public Sub AddMethod()' ToStringメソッドの宣言. Dim toStringMethodとして新しいCodeMemberMethod()toStringMethod. ReturnType = _新しいCodeTypeReference(GetType(System. (New CodeThisReferenceExpression()、 "Height")新規のCodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 "Area")のように、新しいCodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 " ) ' ToStringメソッドのreturn文の宣言. Dim returnStatementとして新しいCodeMethodReturnStatement()'このステートメントは、幅の文字列表現を返します。高さ、面積. Dim formattedOutput As String = "オブジェクト:"&Environment. 式=新しいCodeMethodInvokeExpression(_新しいCodeTypeReferenceExpression( "システム. String)」、「書式」、_新しいCodePrimitiveExpression(書式付き出力)、widthReference、_ heightReference、areaReference)toStringMethod. Add(toStringMethod)End Sub' AddMethod'クラスにコンストラクタを追加する. Public Sub AddConstructor()'新しいコンストラクタDimコンストラクタを新しいCodeConstructorコンストラクタとして宣言します。. Add(_新しいCodeParameterDeclarationExpression(_ GetType(System. Add(_新しいCodeParameterDeclarationExpression(_ GetType(System. ダブル)、「高さ」)) 'フィールド初期化ロジックを追加するDim widthReference As New CodeFieldReferenceExpression(_ New CodeThisReferenceExpression()、 "widthValue")コンストラクタ.
維生素d 生成 クラス図 書き方 ツイッター
新しいCodeFieldReferenceExpression(_新しいCodeThisReferenceExpression()、 "heightValue")コンストラクタとして、新しいCodeAssignStatement(_ widthReference、新しいCodeArgumentReferenceExpression( "width")). Add(_新しいCodeAssignStatement(heightReference、_新しいCodeArgumentReferenceExpression( "height")))targetClass. Add(コンストラクタ)End Sub&AddConstructor'エントリポイントをクラスに追加する. 新しいCodeObjectCreateExpression(_新しいCodeTypeReference( "CodeDOMCreatedClass")、_新しいCodePrimitiveExpression(5)のように暗い開始として新しいCodeEntryPointMethod(). 9)) 'ステートメントを追加:' "CodeDOMCreatedClass testClass = _'新しいCodeDOMCreatedClass(5. Add(新しいCodeVariableDeclarationStatement(新しいCodeTypeReference( "CodeDOMCreatedClass")、_ "testClass"、objectCreate))'式を作成する:' "testClass. 新しいCodeMethodInvokeExpression(_新しいCodeVariableReferenceExpression( "testClass")、 "ToString")'システムを追加する. 追加(新しいCodeMethodInvokeExpression(_新しいCodeTypeReferenceExpression( "システム. コンソール ")、_" WriteLine "、toStringInvoke))targetClass. Add(start)End Sub' AddEntryPoint'コンパイル単位からVisual Basicソースコードを生成する. パブリックSub GenerateVBCode(ByVal fileName As String)Dim Provider As CodeDomProvider provider = CodeDomProvider. CreateProvider( "VisualBasic")Dimオプションとして新規CodeGeneratorOptions()Dim SourceWriter As New StreamWriter(fileName)プロバイダを試してみる.
維生素d 生成 クラス図 書き方 ソフト
GenerateCodeFromCompileUnit(_ targetUnit、sourceWriter、options)最後にsourceWriter. Dispose()End Try End Sub&GenerateVBCode' CodeDOMグラフを作成してコードを生成する. Shared Sub Main()Dimサンプルas新しいSample()サンプル. GenerateVBCode(outputFileName)End Sub&Main
End Class&Sampleこのサンプルをコンパイルして実行すると、次のソースコードが生成されます.
// ------------------------------------------------ --------------------------
//
//このコードはツールによって生成されたものです. 42
//
//このファイルを変更すると、正しく動作しなくなる可能性があります。
//コードが再生成される.
//
// ------------------------------------------------ --------------------------名前空間CodeDOMSample
{using System; public sealed classes CodeDOMCreatedClass {//オブジェクトの幅. プライベートdouble heightValue; public CodeDOMCreatedClass(double width、double height){this. heightValue); }} public override string ToString(){return string. フォーマット( "オブジェクト:\ r \ n幅= {0}、\ r \ n高さ= {1}、\ r \ n領域= {2}"、これは. エリア); } public static void Main(){CodeDOMCreatedClass testClass = new CodeDOMCreatedClass(5. ToString()); }}
}
'------------------------------------------------ --------------------------
'
'このコードは、. 42
'
'このファイルを変更すると、正しく動作しない場合があります。
'コードが再生成される.
維生素d 生成 クラス図 書き方 ひらがな
'
'------------------------------------------------ -------------------------- Option Strict Off
Option Explicit On Imports System名前空間CodeDOMSampleパブリックNotInheritableクラスCodeDOMCreatedClass 'aオブジェクトの幅. Private widthValue As Double 'オブジェクトの高さ. プライベートheightValueとしてDouble Public Sub New(ByValの幅はDouble、ByValの高さはDoubleとして)MyBase. heightValue = height End Sub'オブジェクトのwidthプロパティ. パブリックReadOnlyプロパティWidth()Double As Return Get Me. widthValue End Get Endプロパティ'オブジェクトのHeightプロパティ. パブリックReadOnlyプロパティの高さ()Double As Return Me. heightValue End Get Endプロパティ'オブジェクトのAreaプロパティ. パブリックReadOnlyプロパティエリア()Double As Return(Me. heightValue)End Get Endプロパティパブリックオーバーライド関数ToString()As String返り文字列. エリア)パブリック共有サブMain()Dim testClass As CodeDOMCreatedClass = _ New CodeDOMCreatedClass(5. ToString)End Sub End Class
終了名前空間
生成されたソースコードは、コンパイルされて実行されると次の出力を生成します.
維生素d 生成 クラス図 書き方 さんへ
コードのコンパイル
このコード例では、FullTrust権限が正常に実行されるように設定されている必要があります.
関連項目
CodeDOMの使用CodeDOMグラフからのソースコードの生成とコンパイル私たちはあなたの考えを聞くのが大好きです. 提供したいタイプを選択してください:製品のフィードバックドキュメントのフィードバックを与えるためにサインインする新しいフィードバックシステムは、GitHubの問題に基づいて構築されています.