Roslyn
лучше ведет себя в генерации кода,
чем T4.
Таким
образом ,
T4 плохо приспособлен к сложной логике
условий,
очень часто встречающейся в бизнес
логике. T4 основывается на шаблонах, что
говорит о том,
что генерируемый код должен соответствовать
заранее определенному описанию. Но так
бывает не всегда,
при определении всех нюансов бизнес
правил. И конечно, Roslyn лучше ведет себя
чем CodeDom потому, что CodeDom не поддерживает
всех нововведений языка,
таких как Linq и лямбда выражения. Roslyn
полностью поддерживает все новые
конструкции языка и с помощью его можно
генерировать такой код,
как вы задумали.
Для
того чтобы генерировать код из существующих
примеров,
можно использовать 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, в нем можно найти утилиты для быстрого развертывания адаптивной инфраструктуры.