У меня есть базовый класс, обладающий виртуальным свойством:
public virtual string Name { get; set; }
 то у меня есть производный класс, который переопределяет только получателя свойства
public override string Name
{
    get { return "Fixed Name"; }
}
 Проблема в том, что это только переопределяет геттер. Если кто-то называет сеттера, вызывающий вызов базового класса будет вызван, и вызывающий абонент не будет знать, что он неэффективен.
Поэтому я подумал, что сделаю что-то вроде:
public override string Name
{
    get { return "Fixed Name"; }
    set { throw new Exception(); } //which exception type?
}
 Итак, два (связанные вопросы):
- Есть ли лучший образец для меня?
 - Если я должен использовать приведенный выше шаблон, какое исключение использовать?
 
 Изменить: некоторые причины, по которым одно исключение было бы предпочтительнее другого, были бы хороши. У моего коллеги и у меня были те же аргументы между NotSupported и InvalidOperation.