Это происходит потому, что ваш метод доступа бесконечно рекурсивен, вызывая переполнение стека.
Измените это:
get { return Level; }
На это:
get { return level; }
Этона самом деле это довольно распространенная вещь в Visual Studio C #, это очень раздражает, функция автозаполнения всегда предпочитает имя доступа по сравнению с именем члена, даже если вы находитесь внутри самого средства доступа.Я подумал, что через 5 лет Microsoft уже исправит это.
РЕДАКТИРОВАТЬ: н / м. Я вижу, вы уже пришли к такому выводу в своем собственном вопросе.Я думаю, что я должен прочитать все сначала, я бросил пистолет.