Thursday, April 12, 2018

Roslyn Is Better for Code Generation

Roslyn лучше ведет себя в генерации кода, чем T4. Таким образом , T4 плохо приспособлен к сложной логике условий, очень часто встречающейся в бизнес логике. T4 основывается на шаблонах, что говорит о том, что генерируемый код должен соответствовать заранее определенному описанию. Но так бывает не всегда, при определении всех нюансов бизнес правил. И конечно, Roslyn лучше ведет себя чем CodeDom потому, что CodeDom не поддерживает всех нововведений языка, таких как Linq и лямбда выражения. Roslyn полностью поддерживает все новые конструкции языка и с помощью его можно генерировать такой код, как вы задумали.

Перевод из книги: Code Generation with Roslyn by Harrison, Nick

Для того чтобы генерировать код из существующих примеров, можно использовать Roslyn Quoter. Его автор Kirill Osenkov участвует в контроле качества Roslyn и Visual Studio.

Вот такой код с сообщениями бота описывается с помощью Roslyn Quoter в 333 строки, но зато в цикле из Excel таблицы он будет на много компактнее.


public class Str

{

public const string cStrHi = "Hi, I'm CakeBot";

public const string cStrNameQ = "What is your name?";

public const string cStrName = "Name";

public const string cStrGetName = "GetName";

public const string cStrWhen = "When would you like the cake delivered?";

public const string cStrProcessingReq = "Thanks for using our service. Delivery has been scheduled for: ";

public const string cStrDontUnderstand = "I'm sorry I don't understand what you mean.";

public const string cStrQuantity = "How many?";

public const string cStrOptions = "Now or Tomorrow";

public const string cStrDeliverBy = "Deliver by: ";

public static string[] DeliverTypes = new string[] { "Now", "Tomorrow" };

public static string[] CakeTypes = new string[] { "Cup Cake", "Triple Layer Cake", "Cream Cake" };

public static string cStrNoPush = "NO_PUSH";

public static string cStrTemplateType = "template";

public static string cStrPayloadTypeGeneric = "generic";

}




Решаемая задача: создание более гибко изменяемых приложений ,под конкретную задачу с с изменением самой структуры программы, вместо добавления внешних параметров и конфигураций в нее.

Список библиотек и проектов основанных на Roclyn, в нем можно найти утилиты для быстрого развертывания адаптивной инфраструктуры.

No comments:

debug magazine archive

  71 jounals still available on issuu with great story of netlabels time.  debug_mag Publisher Publications - Issuu