抽出した文字列を既存の列挙型オブジェクト名として使用するにはどうすればよいですか?

アメト博士

そう、

明確にするために、私はすでにこのQ&Aを見ましたが、これは私の質問ではありません。

さて、私の質問は、Excelから抽出して、分割やその他の方法で分解し、列挙型であるかどうかを確認できる文字列があるということです。

例えば:

string enumStr = "eSomeEnumObject RANDOMENUMVAL" 

は文字列であり、分割して列挙型であるかどうかを確認し、文字列配列を次のように取得できます。

string[] enumArr = { "SomeEnumObject", "RANDOMENUMVAL" };

ここで、class TestClassさまざまなメソッド定義と列挙型も含むライブラリを参照するで使用する必要があります。抽出した列挙型オブジェクトの名前と値は、基本的にすでにそこに存在します。これで、文字列を列挙値に変換するには、次のようなものを使用することがわかりました。

SomeEnumObject enumobj = (SomeEnumObject)Enum.Parse(typeof(SomeEnumObject, "RANDOMENUMVAL");

今私の質問は:

私がプロセスを自動化しようとしているので、文字列として持っているこの列挙型オブジェクト名を取得し、列挙型オブジェクトタイプとして動的に書き込むにはどうすればよいですか?

enumArr[0] enumobj = (enumArr[0])Enum.Parse(typeof(enumArr[0], enumArr[1]);

文字列を列挙型として解析できないため、エラーがスローされます。

だから今、列挙型を再定義せずにこれを行う方法はありますか?

ありがとう!

ジョンスキート

Type.GetType()またはを使用Assembly.GetType()して型を取得する必要があります

あなたは知る必要があるでしょう:

  • それが入っているアセンブリ
  • 完全修飾名(名前空間など)

列挙型が呼び出し元のコードと同じアセンブリにある場合は、を使用できますType.GetType(fullyQualifiedName)別のアセンブリにある場合は、アセンブリ修飾名を作成するか、アセンブリを見つけて(コンパイル時に知っている別のタイプを使用するなど)GetType、アセンブリを呼び出す必要があります。

列挙型の値を解析すると、コンパイル時の型はになりますobjectが、実際には列挙型の(ボックス化された)値になります。その時点で、次のことができます。

  • object他に何も必要ないかのように保管してください
  • dynamicキーワードで動的に使用する
  • を使用して文字列に変換し直しますToString()(同じ値に複数の名前がある場合など、最初に使用したのと同じ文字列が得られない場合があります)
  • 基になるタイプにボックスを解除します。列挙型がわからなくても、基になる型をよく知っている可能性があります

コンパイラはコンパイル時に型を知る必要があるため、変数の実行時の値を型として使用して変数を宣言することはできませんしかし、上記のオプションの1つが役立つはずです。

完全な例を次に示します。

using System;

namespace TestApp
{
    public enum Foo
    {
        Bar = 123
    }

    public class Program
    {
        static void Main()
        {
            // You've parsed these out already
            string name = "Foo";
            string value = "Bar";

            // Work out the fully-qualified name and fetch
            // the type. We use the namespace of a type that
            // we know is in the same namespace as the enum we're
            // looking for.
            string ns = typeof(Program).Namespace;
            string fqn = $"{ns}.{name}";
            Type type = Type.GetType(fqn);
            if (type == null)
            {
                throw new Exception($"Unknown type: {fqn}");
            }

            // Parse the value
            object enumValue = Enum.Parse(type, value);
            Console.WriteLine((int) enumValue); // 123
        }
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オブジェクトとして価値のある列挙型を作成するにはどうすればよいですか?

分類Dev

文字列の値をオブジェクトの名前として使用するにはどうすればよいですか?

分類Dev

文字列の値をオブジェクト名として使用するにはどうすればよいですか?

分類Dev

JavaScriptで名前の文字列を使用してオブジェクトをパラメータとして渡すにはどうすればよいですか?

分類Dev

変数の文字列を使用してJavaScriptオブジェクトを作成し、クラス名を定義するにはどうすればよいですか?

分類Dev

Javaの列挙型にオブジェクトを保存するにはどうすればよいですか?

分類Dev

Javaで文字列変数をオブジェクト名として使用するにはどうすればよいですか?

分類Dev

オブジェクトのネストされた配列を抽出してコア配列に配置するにはどうすればよいですか?

分類Dev

複数の列挙型(2つの列挙型)を使用して、オブジェクトが同時に回転する2つの軸を制御するにはどうすればよいですか?

分類Dev

列挙型VOオブジェクトを使用して列挙型DTOオブジェクトを設定するにはどうすればよいですか?

分類Dev

Swiftで列挙型オブジェクトを辞書キーとして渡すにはどうすればよいですか?

分類Dev

結果の型の文字列値としてジェネリックのクラス名を使用するにはどうすればよいですか

分類Dev

mongodbのObjectIdを使用して、オブジェクトの配列内の文字列の配列を更新するにはどうすればよいですか?

分類Dev

オブジェクトの代わりに文字列/数値をIDとしてhyperHTML.wire()を使用するにはどうすればよいですか?

分類Dev

jqを使用してJSON配列内の既存のオブジェクトを複製するにはどうすればよいですか?

分類Dev

Typeオブジェクトを具象型として使用するにはどうすればよいですか?

分類Dev

文字列を使用してオブジェクトに動的に名前を付けるにはどうすればよいですか?

分類Dev

これをjavascriptを使用してオブジェクトまたは配列として解析するにはどうすればよいですか?

分類Dev

配列オブジェクトと文字列を連結してJavascriptで文字列を取得するにはどうすればよいですか?

分類Dev

symfony 3でオブジェクトの配列を文字列として変換するにはどうすればよいですか?

分類Dev

配列オブジェクトの文字の一部を使用して配列を検索するにはどうすればよいですか?

分類Dev

ジャクソンのObjectMapperを使用してJSON文字列からオブジェクトを作成するにはどうすればよいですか?

分類Dev

列挙型で関連付けられたオブジェクトを使用するにはどうすればよいですか?

分類Dev

Pythonを使用して文字列からクレジットカードのサブ文字列を抽出するにはどうすればよいですか?

分類Dev

HTMLElementのようなJavascriptオブジェクトを介して列挙するにはどうすればよいですか?

分類Dev

javascriptで異なるパラメータを持つオブジェクトとして文字列を使用するにはどうすればよいですか?

分類Dev

reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

分類Dev

列挙型リストに文字を*、/、-、%、+として設定するにはどうすればよいですか?

分類Dev

文字列値を使用してNSArray内のオブジェクトのインデックスを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    オブジェクトとして価値のある列挙型を作成するにはどうすればよいですか?

  2. 2

    文字列の値をオブジェクトの名前として使用するにはどうすればよいですか?

  3. 3

    文字列の値をオブジェクト名として使用するにはどうすればよいですか?

  4. 4

    JavaScriptで名前の文字列を使用してオブジェクトをパラメータとして渡すにはどうすればよいですか?

  5. 5

    変数の文字列を使用してJavaScriptオブジェクトを作成し、クラス名を定義するにはどうすればよいですか?

  6. 6

    Javaの列挙型にオブジェクトを保存するにはどうすればよいですか?

  7. 7

    Javaで文字列変数をオブジェクト名として使用するにはどうすればよいですか?

  8. 8

    オブジェクトのネストされた配列を抽出してコア配列に配置するにはどうすればよいですか?

  9. 9

    複数の列挙型(2つの列挙型)を使用して、オブジェクトが同時に回転する2つの軸を制御するにはどうすればよいですか?

  10. 10

    列挙型VOオブジェクトを使用して列挙型DTOオブジェクトを設定するにはどうすればよいですか?

  11. 11

    Swiftで列挙型オブジェクトを辞書キーとして渡すにはどうすればよいですか?

  12. 12

    結果の型の文字列値としてジェネリックのクラス名を使用するにはどうすればよいですか

  13. 13

    mongodbのObjectIdを使用して、オブジェクトの配列内の文字列の配列を更新するにはどうすればよいですか?

  14. 14

    オブジェクトの代わりに文字列/数値をIDとしてhyperHTML.wire()を使用するにはどうすればよいですか?

  15. 15

    jqを使用してJSON配列内の既存のオブジェクトを複製するにはどうすればよいですか?

  16. 16

    Typeオブジェクトを具象型として使用するにはどうすればよいですか?

  17. 17

    文字列を使用してオブジェクトに動的に名前を付けるにはどうすればよいですか?

  18. 18

    これをjavascriptを使用してオブジェクトまたは配列として解析するにはどうすればよいですか?

  19. 19

    配列オブジェクトと文字列を連結してJavascriptで文字列を取得するにはどうすればよいですか?

  20. 20

    symfony 3でオブジェクトの配列を文字列として変換するにはどうすればよいですか?

  21. 21

    配列オブジェクトの文字の一部を使用して配列を検索するにはどうすればよいですか?

  22. 22

    ジャクソンのObjectMapperを使用してJSON文字列からオブジェクトを作成するにはどうすればよいですか?

  23. 23

    列挙型で関連付けられたオブジェクトを使用するにはどうすればよいですか?

  24. 24

    Pythonを使用して文字列からクレジットカードのサブ文字列を抽出するにはどうすればよいですか?

  25. 25

    HTMLElementのようなJavascriptオブジェクトを介して列挙するにはどうすればよいですか?

  26. 26

    javascriptで異なるパラメータを持つオブジェクトとして文字列を使用するにはどうすればよいですか?

  27. 27

    reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

  28. 28

    列挙型リストに文字を*、/、-、%、+として設定するにはどうすればよいですか?

  29. 29

    文字列値を使用してNSArray内のオブジェクトのインデックスを取得するにはどうすればよいですか?

ホットタグ

アーカイブ