Метод MakeGenericType
typeof(List<>).MakeGenericType(typeof(int))
совпадает с
typeof(List<int>).
Аргументы -
GetGenericArguments,
признак -
IsGenericType.
Синтаксис
Type closed = openDefinition.MakeGenericType(typeArguments);
Пример
Давайте закрыть
List<> типом
int:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Type built = typeof(List<>)
.MakeGenericType(typeof(int));
bool res = built == typeof(List<int>);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте проверить имя закрытого типа:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Type built = typeof(List<>)
.MakeGenericType(typeof(int));
string res = built.Name;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"List`1"
Пример
Давайте убедиться, что тип обобщённый:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Type built = typeof(List<>)
.MakeGenericType(typeof(int));
bool res = built.IsGenericType;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
GetGenericArguments,
аргументы типа -
свойство
IsGenericType,
это обобщение -
свойство
FullName,
имя с пространством -
Type,
описание типа