次のジェネリック クラスを検討してください。
Dictionary<TKey, TValue>
List<T>
CustomHashMap<K, V>
ジェネリック型パラメーターに付けられた名前を反映することは可能ですか?
例えば
"TKey", "TValue"
"T"
"K", "V"
次のジェネリック クラスを検討してください。
Dictionary<TKey, TValue>
List<T>
CustomHashMap<K, V>
ジェネリック型パラメーターに付けられた名前を反映することは可能ですか?
例えば
"TKey", "TValue"
"T"
"K", "V"
これはトリックを行うようです:
class Program
{
static IEnumerable<string> GetGenericArgumentNames(Type type)
{
if (!type.IsGenericTypeDefinition)
{
type = type.GetGenericTypeDefinition();
}
foreach (var typeArg in type.GetGenericArguments())
{
yield return typeArg.Name;
}
}
static void Main(string[] args)
{
// For a raw type
Trace.WriteLine(string.Join(" ", GetGenericArgumentNames(typeof(Foo<>))));
Trace.WriteLine(string.Join(" ", GetGenericArgumentNames(typeof(Foo<Quux>))));
}
}
class Foo<TBar> {}
class Quux {}