Объявление метода как универсального означает, что вы можете передать аргумент универсального типа. Так что вы можете сделать это:
public class TestUsage
{
public int IncrementId<T>(T test) where T : Test
{
return 1 + test.GetId();
}
}
Аргумент общего типа T
ничего не значит, если что-то с этим типом не используется в качестве входного аргумента, возвращаемого значения, переменной типа T
внутри метода или некоторой комбинации.