To clarify, I mean writing scripts that generate or modify classes for you instead of manually writing them every time, for example if you want to replace reflection with a ton of verbose repetitive code for performance reasons I guess?

My only experience with this is just plain old manual txt generation with something like python, and maintaining legacy t4/tt VS files but those are kind of a nightmare.

What’s a good modern way of accomplishing this, have there been any improvements in this area?

  • tatterdemalion@programming.dev
    link
    fedilink
    arrow-up
    8
    ·
    7 months ago

    I’ve never needed to use a template processor to generate code. Usually a macro system built into the programming language is better for this. I think template processors are more commonly used for generating text documents.

    What problem are you trying to solve?

    • Cyno@programming.devOP
      link
      fedilink
      arrow-up
      2
      ·
      7 months ago

      The most common usecase is generating data models based on the database, mostly using t4 files so far. We have a non-standard way of defining some parts of it so the default MS tools don’t quite cut it (like ef dbcontext scaffold). I’ve been looking into roslyn but it seems like it might be more trouble than its worth, but default t4 doesn’t even have a proper editor and syntax highlighting so its a low bar atm.

      • tatterdemalion@programming.dev
        link
        fedilink
        arrow-up
        3
        ·
        7 months ago

        Is it prohibitively expensive to manually define your data types? How many do you have?

        I do not generally recommend using ORMs, but this advice is likely dependent on the particular ecosystem you are dealing with.

        It seems like you are pretty deep into Microsoft/.NET territory. I don’t have any experience with .NET so I might not be the best person to help.

      • TehPers@beehaw.org
        link
        fedilink
        English
        arrow-up
        3
        ·
        7 months ago

        If you’re writing C#, you could take a look into Source Generators. They’re supported directly by Roslyn I believe, and are pure C# instead of t4’s syntax. They’re often used with attributes to augment types, but I believe they can be used to generate sources on their own, and even read from a config file if you want to (or maybe even query the DB, if that’s something you want to do at build time for some reason, though I’ve never tried this).