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, в нем можно найти утилиты для быстрого развертывания адаптивной инфраструктуры.
Список библиотек и проектов основанных на Roclyn, в нем можно найти утилиты для быстрого развертывания адаптивной инфраструктуры.
No comments:
Post a Comment