Что это за конструкция public T GetService() where T: class { throw new NotImplementedException(); } в C#?
Это объявление обобщённого метода, в котором тело не определено.
В этом коде три разных концепции:
1) это объявление метода GetService без аргументов и с возвращаемым типом T
2) В качестве возвращаемого типа стоит T - это обобщённый (generic) тип, реальный тип будет указан при вызове метода. Слово where указывает ограничение - реальным типом должен быть класс.
Например, можно указать MyService x = GetSevice<MyService>(); или Person x = GetSevice<Person>(); или IWeapon x = GetSevice<IWeapon>();.
3) в качестве тела метода стоит throw new NotImplementedException(); - возникнет исключение, указывающее, что тело не определено. Так делается, если нужно показать, что этот код вызывать не нужно, либо если тело будет написано позже, а сейчас при вызове будет исключение.
T — плейсхолдер для типа. А про конструкцию на сайте майкрософта.