CodeTypeParameter クラス
アセンブリ: System (system.dll 内)

<SerializableAttribute> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ <ComVisibleAttribute(True)> _ Public Class CodeTypeParameter Inherits CodeObject
[SerializableAttribute] [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] [ComVisibleAttribute(true)] public class CodeTypeParameter : CodeObject
[SerializableAttribute] [ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] [ComVisibleAttribute(true)] public ref class CodeTypeParameter : public CodeObject

CodeTypeParameter クラスは、ジェネリック型またはジェネリック メソッドの宣言内の型パラメータを表します。
ジェネリック型またはジェネリック メソッドの宣言には、型パラメータと呼ばれる、指定されていない型が含まれます。型パラメータ名は、ジェネリック宣言の本文内の型を表しています。たとえば、List クラスのジェネリック宣言には、型パラメータ T が含まれます。
ジェネリックの詳細については、「.NET Framework クラス ライブラリのジェネリック (C# プログラミング ガイド)」を参照してください。

CodeTypeParameter クラスを使用し、CodeDOM グラフを作成して、ジェネリック コードを含むアプリケーションを生成する方法を、次のコード例に示します。
Imports System.CodeDom Imports System.CodeDom.Compiler Imports System.Collections Imports System.Collections.Specialized Imports System.IO Imports System.Reflection Imports System.Text.RegularExpressions Imports System.Globalization Imports System.Collections.Generic Class CodeDomGenericsDemo Shared Sub Main() Try CreateGenericsCode("vb", "Generic.vb", "GenericVB.exe") Catch e As Exception LogMessage(("Unexpected Exception:" + e.ToString())) End Try End Sub 'Main Shared Sub CreateGenericsCode(ByVal providerName As String, ByVal sourceFileName As String, ByVal assemblyName As String) Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider(providerName) LogMessage("Building CodeDOM graph...") Dim cu As New CodeCompileUnit() CreateGraph(provider, cu) Dim sw As New StringWriter() LogMessage("Generating code...") provider.GenerateCodeFromCompileUnit(cu, sw, Nothing) Dim output As String = sw.ToString() output = Regex.Replace(output, "Runtime version:[^" + vbCr + vbLf + "]*", "Runtime version omitted for demo") LogMessage("Displaying source code...") LogMessage(output) LogMessage("Writing source code to file...") Dim s As Stream = File.Open(sourceFileName, FileMode.Create) Dim t As New StreamWriter(s) t.Write(output) t.Close() s.Close() Dim opt As New CompilerParameters(New String() {"System.dll", "System.Xml.dll", "System.Windows.Forms.dll", "System.Data.dll", "System.Drawing.dll"}) opt.GenerateExecutable = False opt.TreatWarningsAsErrors = True opt.IncludeDebugInformation = True opt.GenerateInMemory = True Dim results As CompilerResults LogMessage(("Compiling with provider " + providerName)) results = provider.CompileAssemblyFromFile(opt, sourceFileName) OutputResults(results) If results.NativeCompilerReturnValue <> 0 Then LogMessage("") LogMessage("Compilation failed.") Else LogMessage("") LogMessage("Demo completed successfully.") End If File.Delete(sourceFileName) End Sub 'CreateGenericsCode ' Create a CodeDOM graph. Shared Sub CreateGraph(ByVal provider As CodeDomProvider, ByVal cu As CodeCompileUnit) ' Determine if the generator supports generics. If Not provider.Supports(GeneratorSupport.GenericTypeReference Or GeneratorSupport.GenericTypeDeclaration) Then ' Return if the generator does not support generics. Return End If Dim ns As New CodeNamespace("DemoNamespace") ns.Imports.Add(New CodeNamespaceImport("System")) ns.Imports.Add(New CodeNamespaceImport("System.Collections.Generic")) cu.Namespaces.Add(ns) ' Declare a generic class. Dim class1 As New CodeTypeDeclaration() class1.Name = "MyDictionary" class1.BaseTypes.Add( _ New CodeTypeReference("Dictionary", _ New CodeTypeReference() {New CodeTypeReference("TKey"), _ New CodeTypeReference("TValue")})) Dim kType As New CodeTypeParameter("TKey") kType.HasConstructorConstraint = True kType.Constraints.Add(New CodeTypeReference(GetType(IComparable))) kType.CustomAttributes.Add _ (New CodeAttributeDeclaration("System.ComponentModel.DescriptionAttribute", _ New CodeAttributeArgument(New CodePrimitiveExpression("KeyType")))) Dim iComparableT As New CodeTypeReference("IComparable") iComparableT.TypeArguments.Add(New CodeTypeReference(kType)) kType.Constraints.Add(iComparableT) Dim vType As New CodeTypeParameter("TValue") vType.Constraints.Add(New CodeTypeReference(GetType(IList(Of System.String)))) vType.CustomAttributes.Add _ (New CodeAttributeDeclaration("System.ComponentModel.DescriptionAttribute", _ New CodeAttributeArgument(New CodePrimitiveExpression("ValueType")))) class1.TypeParameters.Add(kType) class1.TypeParameters.Add(vType) ns.Types.Add(class1) ' Declare a generic method. Dim printMethod As New CodeMemberMethod() Dim sType As New CodeTypeParameter("S") sType.HasConstructorConstraint = True Dim tType As New CodeTypeParameter("T") tType.HasConstructorConstraint = True printMethod.Name = "Print" printMethod.TypeParameters.Add(sType) printMethod.TypeParameters.Add(tType) printMethod.Statements.Add(ConsoleWriteLineStatement _ (New CodeDefaultValueExpression(New CodeTypeReference("T")))) printMethod.Statements.Add(ConsoleWriteLineStatement _ (New CodeDefaultValueExpression(New CodeTypeReference("S")))) printMethod.Attributes = MemberAttributes.Public class1.Members.Add(printMethod) Dim class2 As New CodeTypeDeclaration() class2.Name = "Demo" Dim methodMain As New CodeEntryPointMethod() Dim [myClass] As New CodeTypeReference("MyDictionary", _ New CodeTypeReference() {New CodeTypeReference(GetType(Integer)), _ New CodeTypeReference("List", _ New CodeTypeReference() {New CodeTypeReference("System.String")})}) methodMain.Statements.Add(New CodeVariableDeclarationStatement([myClass], _ "dict", New CodeObjectCreateExpression([myClass]))) methodMain.Statements.Add(ConsoleWriteLineStatement _ (New CodePropertyReferenceExpression _ (New CodeVariableReferenceExpression("dict"), "Count"))) methodMain.Statements.Add _ (New CodeExpressionStatement _ (New CodeMethodInvokeExpression _ (New CodeMethodReferenceExpression _ (New CodeVariableReferenceExpression("dict"), _ "Print", New CodeTypeReference() _ {New CodeTypeReference("System.Decimal"), _ New CodeTypeReference("System.Int32")}), _ New CodeExpression(-1) {}))) Dim longTypeName As String = GetType( _ System.Collections.Generic.Dictionary(Of Integer, _ System.Collections.Generic.List(Of String))()).FullName Dim longType As New CodeTypeReference(longTypeName) methodMain.Statements.Add(New CodeVariableDeclarationStatement _ (longType, "dict2", New CodeArrayCreateExpression _ (longType, New CodeExpression(0) {New CodePrimitiveExpression(Nothing)}))) methodMain.Statements.Add(ConsoleWriteLineStatement(New CodePropertyReferenceExpression(New CodeVariableReferenceExpression("dict2"), "Length"))) class2.Members.Add(methodMain) ns.Types.Add(class2) End Sub 'CreateGraph Overloads Shared Function ConsoleWriteLineStatement(ByVal exp As CodeExpression) As CodeStatement Return New CodeExpressionStatement(New CodeMethodInvokeExpression _ (New CodeMethodReferenceExpression _ (New CodeTypeReferenceExpression _ (New CodeTypeReference("Console")), "WriteLine"), _ New CodeExpression() {exp})) End Function 'ConsoleWriteLineStatement Overloads Shared Function ConsoleWriteLineStatement(ByVal [text] As String) As CodeStatement Return ConsoleWriteLineStatement(New CodePrimitiveExpression([text])) End Function 'ConsoleWriteLineStatement Shared Sub LogMessage(ByVal [text] As String) Console.WriteLine([text]) End Sub 'LogMessage Shared Sub OutputResults(ByVal results As CompilerResults) LogMessage(("NativeCompilerReturnValue=" + results.NativeCompilerReturnValue.ToString())) Dim s As String For Each s In results.Output LogMessage(s) Next s End Sub 'OutputResults End Class 'CodeDomGenericsDemo
using System.CodeDom; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Specialized; using System.IO; using System.Reflection; using System.Text.RegularExpressions; using System.Globalization; using System.Collections.Generic; namespace System.CodeDom { class CodeDomGenericsDemo { static void Main() { try { CreateGenericsCode("cs", "Generic.cs", "GenericCS.exe"); } catch (Exception e) { LogMessage("Unexpected Exception:" + e.ToString()); } } static void CreateGenericsCode(string providerName, string sourceFileName, string assemblyName) { CodeDomProvider provider = CodeDomProvider.CreateProvider(providerName); LogMessage("Building CodeDOM graph..."); CodeCompileUnit cu = new CodeCompileUnit(); CreateGraph(provider, cu); StringWriter sw = new StringWriter(); LogMessage("Generating code..."); provider.GenerateCodeFromCompileUnit(cu, sw, null); string output = sw.ToString(); output = Regex.Replace(output, "Runtime Version:[^\r\n]*", "Runtime Version omitted for demo"); LogMessage("Dumping source..."); LogMessage(output); LogMessage("Writing source to file..."); Stream s = File.Open(sourceFileName, FileMode.Create); StreamWriter t = new StreamWriter(s); t.Write(output); t.Close(); s.Close(); CompilerParameters opt = new CompilerParameters(new string[]{ "System.dll", "System.Xml.dll", "System.Windows.Forms.dll", "System.Data.dll", "System.Drawing.dll"}); opt.GenerateExecutable = false; opt.TreatWarningsAsErrors = true; opt.IncludeDebugInformation = true; opt.GenerateInMemory = true; CompilerResults results; LogMessage("Compiling with " + providerName); results = provider.CompileAssemblyFromFile(opt, sourceFileName); OutputResults(results); if (results.NativeCompilerReturnValue != 0) { LogMessage(""); LogMessage("Compilation failed."); } else { LogMessage(""); LogMessage("Demo completed successfully."); } File.Delete(sourceFileName); } // Create a CodeDOM graph. static void CreateGraph(CodeDomProvider provider, CodeCompileUnit cu) { if (!provider.Supports(GeneratorSupport.GenericTypeReference | GeneratorSupport.GenericTypeDeclaration)) { // Return if the generator does not support generics. return; } CodeNamespace ns = new CodeNamespace("DemoNamespace"); ns.Imports.Add(new CodeNamespaceImport("System")); ns.Imports.Add(new CodeNamespaceImport("System.Collections.Generic")); cu.Namespaces.Add(ns); // Declare a generic class. CodeTypeDeclaration class1 = new CodeTypeDeclaration(); class1.Name = "MyDictionary"; class1.BaseTypes.Add(new CodeTypeReference("Dictionary" , new CodeTypeReference[] { new CodeTypeReference("TKey"), new CodeTypeReference("TValue"), })); CodeTypeParameter kType = new CodeTypeParameter("TKey"); kType.HasConstructorConstraint = true; kType.Constraints.Add(new CodeTypeReference(typeof(IComparable))); kType.CustomAttributes.Add(new CodeAttributeDeclaration( "System.ComponentModel.DescriptionAttribute", new CodeAttributeArgument(new CodePrimitiveExpression("KeyType")))); CodeTypeReference iComparableT = new CodeTypeReference("IComparable"); iComparableT.TypeArguments.Add(new CodeTypeReference(kType)); kType.Constraints.Add(iComparableT); CodeTypeParameter vType = new CodeTypeParameter("TValue"); vType.Constraints.Add(new CodeTypeReference(typeof(IList<System.String>))); vType.CustomAttributes.Add(new CodeAttributeDeclaration( "System.ComponentModel.DescriptionAttribute", new CodeAttributeArgument(new CodePrimitiveExpression("ValueType")))); class1.TypeParameters.Add(kType); class1.TypeParameters.Add(vType); ns.Types.Add(class1); // Declare a generic method. CodeMemberMethod printMethod = new CodeMemberMethod(); CodeTypeParameter sType = new CodeTypeParameter("S"); sType.HasConstructorConstraint = true; CodeTypeParameter tType = new CodeTypeParameter("T"); sType.HasConstructorConstraint = true; printMethod.Name = "Print"; printMethod.TypeParameters.Add(sType); printMethod.TypeParameters.Add(tType); printMethod.Statements.Add(ConsoleWriteLineStatement( new CodeDefaultValueExpression(new CodeTypeReference("T")))); printMethod.Statements.Add(ConsoleWriteLineStatement( new CodeDefaultValueExpression(new CodeTypeReference("S")))); printMethod.Attributes = MemberAttributes.Public; class1.Members.Add(printMethod); CodeTypeDeclaration class2 = new CodeTypeDeclaration(); class2.Name = "Demo"; CodeEntryPointMethod methodMain = new CodeEntryPointMethod(); CodeTypeReference myClass = new CodeTypeReference( "MyDictionary", new CodeTypeReference[] { new CodeTypeReference(typeof(int)) , new CodeTypeReference("List", new CodeTypeReference[] {new CodeTypeReference("System.String") })}); methodMain.Statements.Add( new CodeVariableDeclarationStatement(myClass , "dict", new CodeObjectCreateExpression(myClass))); methodMain.Statements.Add(ConsoleWriteLineStatement( new CodePropertyReferenceExpression( new CodeVariableReferenceExpression("dict") , "Count"))); methodMain.Statements.Add(new CodeExpressionStatement( new CodeMethodInvokeExpression( new CodeMethodReferenceExpression( new CodeVariableReferenceExpression("dict") , "Print", new CodeTypeReference[] { new CodeTypeReference("System.Decimal") , new CodeTypeReference("System.Int32") ,}), new CodeExpression[0]))); string dictionaryTypeName = typeof(System.Collections.Generic.Dictionary<int , System.Collections.Generic.List<string>>[]).FullName; CodeTypeReference dictionaryType = new CodeTypeReference(dictionaryTypeName); methodMain.Statements.Add( new CodeVariableDeclarationStatement(dictionaryType, "dict2", new CodeArrayCreateExpression(dictionaryType, new CodeExpression[1] { new CodePrimitiveExpression(null) }))); methodMain.Statements.Add(ConsoleWriteLineStatement( new CodePropertyReferenceExpression( new CodeVariableReferenceExpression("dict2") , "Length"))); class2.Members.Add(methodMain); ns.Types.Add(class2); } static CodeStatement ConsoleWriteLineStatement(CodeExpression exp) { return new CodeExpressionStatement( new CodeMethodInvokeExpression( new CodeMethodReferenceExpression( new CodeTypeReferenceExpression(new CodeTypeReference("Console")), "WriteLine"), new CodeExpression[]{ exp, })); } static CodeStatement ConsoleWriteLineStatement(string text) { return ConsoleWriteLineStatement(new CodePrimitiveExpression(text)); } static void LogMessage(string text) { Console.WriteLine(text); } static void OutputResults(CompilerResults results) { LogMessage("NativeCompilerReturnValue=" + results.NativeCompilerReturnValue.ToString()); foreach (string s in results.Output) { LogMessage(s); } } } }

System.CodeDom.CodeObject
System.CodeDom.CodeTypeParameter


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


CodeTypeParameter コンストラクタ ()
アセンブリ: System (system.dll 内)



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


CodeTypeParameter コンストラクタ (String)
アセンブリ: System (system.dll 内)


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


CodeTypeParameter コンストラクタ

名前 | 説明 |
---|---|
CodeTypeParameter () | CodeTypeParameter クラスの新しいインスタンスを初期化します。 |
CodeTypeParameter (String) | 指定した型パラメータ名を使用して CodeTypeParameter クラスの新しいインスタンスを初期化します。 |

CodeTypeParameter プロパティ

名前 | 説明 | |
---|---|---|
![]() | Constraints | 型パラメータの制約を取得します。 |
![]() | CustomAttributes | 型パラメータのカスタム属性を取得します。 |
![]() | HasConstructorConstraint | 型パラメータにコンストラクタの制約があるかどうかを表す値を取得または設定します。 |
![]() | Name | 型パラメータの名前を取得または設定します。 |
![]() | UserData | 現在のオブジェクトのユーザー定義可能なデータを取得または設定します。 ( CodeObject から継承されます。) |

CodeTypeParameter メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

CodeTypeParameter メンバ
ジェネリック型またはジェネリック メソッドの型パラメータを表します。
CodeTypeParameter データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Constraints | 型パラメータの制約を取得します。 |
![]() | CustomAttributes | 型パラメータのカスタム属性を取得します。 |
![]() | HasConstructorConstraint | 型パラメータにコンストラクタの制約があるかどうかを表す値を取得または設定します。 |
![]() | Name | 型パラメータの名前を取得または設定します。 |
![]() | UserData | 現在のオブジェクトのユーザー定義可能なデータを取得または設定します。(CodeObject から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

Weblioに収録されているすべての辞書からCodeTypeParameterを検索する場合は、下記のリンクをクリックしてください。

- CodeTypeParameterのページへのリンク