ModuleBuilder.DefineEnum メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ModuleBuilder.DefineEnum メソッドの意味・解説 

ModuleBuilder.DefineEnum メソッド

指定した型の value__ という単一の非静的フィールドを持つ値型と共に列挙型を定義します。

名前空間: System.Reflection.Emit
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function DefineEnum ( _
    name As String, _
    visibility As TypeAttributes, _
    underlyingType As Type _
) As EnumBuilder
Dim instance As ModuleBuilder
Dim name As String
Dim visibility As TypeAttributes
Dim underlyingType As Type
Dim returnValue As EnumBuilder

returnValue = instance.DefineEnum(name, visibility, underlyingType)
public EnumBuilder DefineEnum (
    string name,
    TypeAttributes visibility,
    Type underlyingType
)
public:
EnumBuilder^ DefineEnum (
    String^ name, 
    TypeAttributes visibility, 
    Type^ underlyingType
)
public EnumBuilder DefineEnum (
    String name, 
    TypeAttributes visibility, 
    Type underlyingType
)
public function DefineEnum (
    name : String, 
    visibility : TypeAttributes, 
    underlyingType : Type
) : EnumBuilder

パラメータ

name

列挙型の完全パス。name には埋め込み null を含めることができません。

visibility

列挙型の型属性。属性は、VisibilityMask で定義された任意のビットです。

underlyingType

列挙型の基になる型。

戻り値
定義された列挙型を返します。

例外例外
例外の種類条件

ArgumentException

可視属性以外の属性が指定されています。

または

指定された名前の列挙型 (Enum) が、このモジュールの親アセンブリに存在します。

または

列挙型 (Enum) のスコープに対して可視属性が正しくありません。たとえば、NestedPublic がvisibility として指定されていて、列挙型 (Enum) が入れ子にされた型ではありません。

ArgumentNullException

name が null 参照 (Visual Basic では Nothing) です。

解説解説
使用例使用例

次のコード例は、DefineEnum を使用して、動的モジュールの中に列挙体クラスを実装する方法を示しています。

Dim currentDomain As AppDomain
Dim myAssemblyName As AssemblyName

' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain

' Create assembly in current currentDomain
myAssemblyName = New AssemblyName()
myAssemblyName.Name = "TempAssembly"

' Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly _ 
                    (myAssemblyName, AssemblyBuilderAccess.Run)

' Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule")

' Define a enumeration type with name 'MyEnum' in the 'TempModule'.
Dim myEnumBuilder As EnumBuilder = myModuleBuilder.DefineEnum
 _ 
                                   ("MyEnum", TypeAttributes.Public,
 GetType(Integer))

' Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1", 2)
myEnumBuilder.DefineLiteral("MyEnumMember2", 3)
myEnumBuilder.CreateType()
AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain;

// Create assembly in current currentDomain
myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = 
   currentDomain.DefineDynamicAssembly
               (myAssemblyName, AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder myEnumBuilder = myModuleBuilder.DefineEnum("MyEnum",
                     TypeAttributes.Public,typeof(int));

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1",2);
myEnumBuilder.DefineLiteral("MyEnumMember2",3);
myEnumBuilder.CreateType();

AppDomain^ currentDomain;
AssemblyName^ myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain::CurrentDomain;

// Create assembly in current currentDomain
myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "TempAssembly";

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder =
   currentDomain->DefineDynamicAssembly(
      myAssemblyName, AssemblyBuilderAccess::Run );

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "TempModule"
 );

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder^ myEnumBuilder = myModuleBuilder->DefineEnum( "MyEnum",
   TypeAttributes::Public, int::typeid );

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder->DefineLiteral( "MyEnumMember1", 2 );
myEnumBuilder->DefineLiteral( "MyEnumMember2", 3 );
myEnumBuilder->CreateType();
AppDomain currentDomain;
AssemblyName myAssemblyName;

// Get the current application domain for the current thread.
currentDomain = AppDomain.get_CurrentDomain();

// Create assembly in current currentDomain
myAssemblyName = new AssemblyName();
myAssemblyName.set_Name("TempAssembly");

// Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly(myAssemblyName,
    AssemblyBuilderAccess.Run);

// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule");

// Define a enumeration type with name 'MyEnum' in the 'TempModule'.
EnumBuilder myEnumBuilder = myModuleBuilder.DefineEnum("MyEnum", 
    TypeAttributes.Public, int.class.ToType());

// Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1", (Int32)2);
myEnumBuilder.DefineLiteral("MyEnumMember2", (Int32)3);
myEnumBuilder.CreateType();
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ModuleBuilder クラス
ModuleBuilder メンバ
System.Reflection.Emit 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

ModuleBuilder.DefineEnum メソッドのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



ModuleBuilder.DefineEnum メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS