В дополнение к ответу других на второй вопрос: Да, мы можем получить ограничения из ParameterInfo
, используя GetGenericParameterConstraints()
, но это не работает для всех обстоятельств. Рассмотрим такой общий метод, как этот:
public static void MyMethod<T,V>() where T : Dictionary<int, int>
{
}
Для этого метода есть ограничение, но метод не имеет параметров (подумайте о Enumerable.Cast ). Я собираюсь сказать, что ограничение - это не часть параметров, а сам метод. Мы можем получить ограничения:
method.GetGenericArguments()[0].BaseType //the constraint of T
method.GetGenericArguments()[1].BaseType //that of V: Object