All streams
Search
Write a publication
Pull to refresh
18
0
Янтимиров Амир Афанасьевич @AmirYantimirov

Программист

Send message

А более общо — бывает необходимость работать с данными разной степени валидности, и в этом случае полезно иметь отдельно структуры данных и их валидаторы.

А если так:
bool IsValid(int value) {
return value==(int)DateTime.Now.DayOfWeek;
}

В общем случае, валидация может предполагать соответствие каким-либо внешним данным, и потому принципиально не может быть выражена системой типов. Тем не менее, декларировать работу с данными, прошедшими валидацию, довольно просто.


abstract class Validated<T> {
    public T Value;
    public Validated(T value) {
      if (!IsValid(value)) throw new Exception("Not valid");
      Value = value;
    }
    public abstract bool IsValid(T value);
  }

  class Int42Validated : Validated<int> {
    public Int42Validated(int value) : base(value) { }
    public override bool IsValid(int value) {
      return value==42;
    }
  }

  void Foo(Int42Validated arg) { }
Пожалуйста:
  <local:ColumnsGrid Columns="Header,*" Spacing="4" >
    <RadioButton Name="radioFontDefault" Content="Default font" />
    <TextBox Name="textFontDefault" Text="Segoe UI" IsReadOnly="True"/>
    <Separator Height="4" />
    <RadioButton Name="radioFontCustom" Content="Custom font" />
    <TextBox Name="textFontCustom" Text="Segoe UI" IsReadOnly="True"/>
  </local:ColumnsGrid>

И у меня был. Но потребовались различные интервалы.
Ну что ж, я хотел написать решение с async/await, для сравнения, но обнаружил, что этот функционал доступен только начиная с .NET 4.5. Мы же продолжаем писать под 3.5. И пока все работает, решение о переходе на следующую версию рантайма принято не будет.

Пойду прыгать с парашютом в продакшен.
Не могу сказать, что не устраивает. Я еще не применял ни обычные средства, ни ко-итераторы для решения реальных задач. Только прикидывал возможности.
Именно так. На C++ это был макрос, просто 'SM'.
У меня уже есть решение, которым я полностью удовлетворен. Потребуется веский повод, чтобы перейти на появившийся в языке функционал.
В строке
var sm = SM.New+"Числа"-1-2-3;

не используются скобки и запятые, экономятся нажатия пальцев!
2

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity