Какое исключение следует делать, если я сталкиваюсь с незаконным состоянием - например, метод инициализации, который следует вызывать только один раз, когда вызывается второй раз? Я действительно не вижу никакого встроенного исключения, которое имеет смысл. Это похоже на что-то, что должно быть в рамках - я не буду тыкать в нужное место?
InvalidOperationException может быть?
Исключение, которое вызывается, когда вызов метода недействителен для текущего состояния объекта.
Если вообще я бы сказал, что System.InvalidProgramException станет ближе всего к тому, что вы хотите. Что не так, если вы выбрали специальное исключение?