Макрос для создания DTO типов
От: ionoy Эстония www.ammyui.com
Дата: 29.05.14 09:10
Оценка:
Начали писать серию статей по NemerleWeb, и там понадобился макрос, который сделал бы объявление типов более лаконичными.

Первый пример — это классический todo список. Для такого списка неплохо было бы создать тип:
public class Task
{
   public Name : string { get; set; }
   public Priority : string { get; set; }
   public IsDone : bool { get; set; }
}

Так как тип хотелось бы уместить внутри Unit (класс с логикой и разметкой), то получается чересчур многословно. Опять же вспоминаем одну из целей проекта — "максимальная лаконичность".

Предложение:
[Dto] class Task { Name : string; Priority : string; IsDone : bool }

По умолчанию Dto конвертирует эти поля в свойства и добавляет модификатор public. Так же создаётся конструктор, инициализирующий все поля (упрощённый вариант [Record])

Возможные опции:

[Dto(fields)] — поля остаются полями, но они мутабельные
[Dto(fields, immutable)] — поля остаются иммутабельными
[Dto(immutable)] — свойства, иммутабельные (private set)
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.