System.Reflection.Emitでのネストされた列挙
-
03-07-2019 - |
質問
ネストされた列挙型でクラスを作成したい
public class Foo
{
public enum Views
{
}
}
ただし、System.Reflection.Emit.TypeBuilderクラスには、DefineNestedTypeのみのDefineNestedEnumはありません。 ModuleBuilder.DefineEnumが存在するため、列挙型を作成できますが、ネストする方法はありません。偽造せずに(つまり、EnumBuilderを使用して)列挙型を作成できますか?
ソリューションを以下の回答に移動しました。
解決 2
質問への回答をここに移動します。
考えられる唯一のことは、System.Enumを拡張し、定数値を持つpublic | static | literalフィールドを定義するシールクラスとしてネストされた型を定義することです。これは基本的に、C#コンパイラが逆アセンブルして学んだことを基にしています。これを実行してアセンブリを参照すると、Intellisenseはそれを列挙として認識し、列挙のように機能します。
これは、MSDNがJeremyがリンクしたことを示す方法です。
他のヒント
の最後の例を参照してください。この記事は、まさにあなたが望むことをします。 (正しい引数でDefineNestedTypeを使用します)
所属していません StackOverflow