В соответствии со спецификацией метаданных Раздела II для таблицы GenericParamConstraint для CLR,
Таблица GenericParamConstraint записывает ограничения для каждого общий параметр. Каждый общий параметр может быть ограничен для получения с нуля или одного класса. Каждый общий параметр может быть ограничен до реализовать ноль или более интерфейсов.
Проблема в том, что я не могу найти правильный фрагмент кода C #, чтобы компилятор C # генерировал одну строку в таблице GenericParamConstraint. Я пробовал использовать
public interface IFoo
{
}
public interface IBaz
{
}
public interface IBar
{
}
public class Foo
{
}
public class SampleClassWithGenericParamConstraint<T>
where T : IFoo, IBaz, new()
{
public void DoSomething<U>(U arg1)
where U : struct
{
}
}
class Program
{
static void Main(string[] args)
{
}
}
.. но проблема в том, что компилятор C # генерирует только строки для таблицы GenericParam вместо добавления строк для таблицы GenericParamConstraint. Итак, вот мой вопрос - есть ли какой-либо образец кода, написанный на C #, который заставил бы компилятор C # добавить строку метаданных в таблицу GenericParamConstraint, чтобы я мог использовать образец двоичного кода? И если это какое-то ограничение со стороны компилятора C #, существует ли эквивалентный фрагмент кода ILASM, который мог бы выполнять эту работу вместо этого?