Stop Copy Pasting Code!
Use Source Generators Instead
drewfrisk.dev
Drew Frisk
Senior Software Engineer @ MetaFarms
�
https://drewfrisk.dev
https://github.com/MysterDru
/in/drewfrisk
drewfrisk.dev
A leading AgriTech company with a 20 year history in the swine production industry. We help pig producers identify problems in their inventory and manage the full life-cycle of a pig from birth to market.
drewfrisk.dev
Agenda
drewfrisk.dev
Setting The Stage
Why did we decide to create source generators?
drewfrisk.dev
Our APIs
drewfrisk.dev
The Dilemma
drewfrisk.dev
Sample API Schema
Northwind Sample Database
drewfrisk.dev
Project Structure
* Entities reside in Data folder for simplicity with EF Core
drewfrisk.dev
Code Demo
What's the difference or similarities between the following code?
drewfrisk.dev
Consolidate and Abstract
Break apart the service interfaces
drewfrisk.dev
drewfrisk.dev
drewfrisk.dev
Roslyn Source Generators
What is a Source Generator?
drewfrisk.dev
Roslyn Source Generators
drewfrisk.dev
Roslyn Source Generators
Source Generators
Compilation Runs
Source generator step of compilation
Generated source code added as input to compilation
Compilation resumes
Analyze source code
Generate new/additional source code
drewfrisk.dev
Analyze Source Code
drewfrisk.dev
2 Core Apis
Syntax API
Concerned with the structure of the source code. It provides classes and methods to parse, create, and manipulate the syntax tree of a program.
Symbols API / Semantic Model
Deals with the semantic meaning of the code, such as the types, members, and other elements defined and referenced in the code. Provides similar functionality to working with Reflection.
drewfrisk.dev
Lets Remove the Repetitiveness
Creating a Source Generator
drewfrisk.dev
Create The Generator
drewfrisk.dev
Create The Generator
Workflow of the Generator is 3 Primary Steps
drewfrisk.dev
Create The Generator
drewfrisk.dev
Step 1: Create Markers
drewfrisk.dev
Step 2: Find Classes
drewfrisk.dev
Step 3: Generate Source Code
drewfrisk.dev
Code Demo
Review the generator and see it in action
drewfrisk.dev
Things to Know
drewfrisk.dev
What Wasn’t Shown
drewfrisk.dev
Now What?
Life After Source Generators
drewfrisk.dev
Life After Generators
drewfrisk.dev
Other Source Generators
drewfrisk.dev
Questions & Resources
https://forms.gle/ScAYEtzXba8zNCCv8
Demo Files & Slides
https://drewfrisk.dev/sessions/kcdc-2024
Speaker Feedback
drewfrisk.dev