Вопрос про getter и setter?
Ваше желаемое поведение нарушает идеологию простоты и прозрачности. Ибо как только мы разрешаем такую конструкцию, возникает множество вопросов с неоднозначными ответами. Например «Что должно выполняться сначала, присвоение значения или код в сеттере?» или «А что делать, если выбросило исключение?» и т.д. Архитекторы языка правильно посчитали, что ответами должен управлять разработчик приложения. Так же при таком подходе теряется часть гибкости синтаксиса. Так, уже не получится записать value в ту или иную переменную в зависимости от состояния объекта или присвоить значение всем элементам внутренней коллекции.
Вы можете использовать ваш второй пример, это будет правильно и совсем не костыльно, а наоборот, очень наглядно. Так же вы можете реализовать getter и setter методами, и это тоже будет корректно и читабельно.
Вот так что-ли?

public class Editor
{
    public string Type
    {
        set
        {
            Editable = value != EditorType.Dictionary;
        }
    }
}
