Я работаю над тем, что необходимо контракт (заданный как интерфейс) и создайте экземпляр на лету, без какого-либо формально определенного конкретного класса, который соответствует этому интерфейсу.
Пример синтаксиса выглядит следующим образом:
IExampleMessage message = MessageBuilder.Create<IExampleMessage>(x => {
x.PropertyA = "Test";
x.PropertyB = 5;
});
Я видел другие библиотеки .NET и фреймворки предлагают поведение вот так (на ум приходит NServiceBus), и мне интересно, есть ли сторонняя библиотека, которая абстрагирует генерацию кода времени выполнения. Я думал, что Castle DynamicProxy - это то место, где можно посмотреть, но, похоже, он полностью сосредоточен на проксировании и перехвате и, похоже, не раскрывает аспект генерации кода.
Я мог бы написать реализацию, которая использует Reflection.Emit для создания класса на лету, однако я бы предпочел использовать надежную библиотеку с открытым исходным кодом, если таковая существует.
Есть предложения?