1. ホーム
  2. c#

[解決済み] 文字列表現からジェネリックタイプを取得するには?

2023-07-10 04:37:58

質問

私は MyClass<T> .

そして、次のような string s = "MyClass<AnotherClass>"; . 文字列からTypeを取得するには s ?

一つの方法(醜い)は、"<" と ">" をパースして行うことです。

Type acType = Type.GetType("AnotherClass");  
Type whatIwant = typeof (MyClass<>).MakeGenericType(acType);

しかし、パースなどを行わずに最終的な型を取得する、よりクリーンな方法はないでしょうか?

どのように解決するのですか?

この 形式のジェネリック は、名前、`文字、型パラメータの数、その後に括弧で囲まれた型パラメータのカンマ区切りのリストが続きます。

Type.GetType("System.Collections.Generic.IEnumerable`1[System.String]");

ジェネリック用のC#構文からCLRが望む種類の文字列に変換する簡単な方法があるとは思えません。 質問で言及されたように、それを解析する簡単な正規表現を書き始めましたが、ネストされたジェネリックスを型パラメーターとして持つ能力を放棄しない限り、解析は非常に複雑になることに気付きました。