Предложение по автопропертям
От: Ziaw Россия  
Дата: 25.11.10 15:37
Оценка:
Предлагаю расширить их синтаксис ключевыми словами getting setting setted(?) и дать доступ в них ко внутреннему полю

Будут доступны следующие паттерны
// lazy value (да, я в курсе, что есть обертки для этого)
public Value : string { getting {when (autofield == null) autofield = someLong} }

// notify 
public Value : string 
{
  get; 
  setting { when (autofield != value) fireValueChanging() }
  setted  { when (autofield != oldvalue) fireValueChanged() } 
}

// constraint
public Value : string 
{
  get; 
  setting 
  {
    match (value) 
    { 
      | "One" | "Two" => ()
      | _ => throw ArgumentException();
    }
  }
}


Чем не устраивает замена автосвойства на обычное: приходится открывать классу внутреннее поле, которое по ошибке может быть изменено в обход свойства.
Можно решить и макрами, но я не знаю как в них добраться до внутреннего поля и синтаксис получается не эстетичный.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.