Skip to main content

MorrisMoxy by Peter Morris

NuGet / site data​

Nuget GitHub last commit GitHub Repo stars

Details​

Info​

info

Name: MorrisMoxy

A C# mix-in code generator

Author: Peter Morris

NuGet: https://www.nuget.org/packages/Morris.Moxy/

You can find more details at https://github.com/mrpmorris/Morris.Moxy

Source: https://github.com/mrpmorris/Morris.Moxy

Original Readme​

note

Morris.Moxy

Morris.Moxy is a code mix-in code generator for Microsoft .NET

NuGet version (PackageName)

Overview​

Moxy allows you to write code templates at development time, which are then processed as Roslyn code-generators in real-time, and the results mixed-in to target classes.

Goal​

  1. Write your code patterns once.
namespace {{ moxy.Class.Namespace }}
{
partial class {{ moxy.Class.Name}}
{
public string FullName => $"{Salutation} {GivenName} {FamilyName}"
public string Salutation { get; set; }
public string GivenName { get; set; }
public string FamilyName { get; set; }
}
}
  1. Moxy automatically creates a .Net attribute for each pattern, which you can then apply to multiple targets in your source code.
[PersonName]
public partial class Contact
{
}
  1. The Moxy Roslyn code-generator executes the code pattern to generate additional C# code
namespace MyApp
{
partial class Contact
{
public string FullName => $"{Salutation} {GivenName} {FamilyName}"
public string Salutation { get; set; }
public string GivenName { get; set; }
public string FamilyName { get; set; }
}
}
  1. Moxy is FAST. Changes to the template should reflect in the code in real-time. No need to recompile C# source code between changes.

Getting started​

The easiest way to get started is to read the documentation. Which includes tutorials that are numbered in an order recommended for learning Morris.Moxy. Each will have a README file that explains how the tutorial was created.

Installation​

You can download the latest release / pre-release NuGet packages from the official Morris.Moxy Nuget page

Release notes​

See the Releases page for release history.

Licence

MIT

About​

note

Generate C# code for classes from template using attributes

How to use​

Example (source csproj, source files)​

This is the CSharp Project that references MorrisMoxy

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>


<ItemGroup>
<None Remove="mixin\IDName.mixin" />
</ItemGroup>

<ItemGroup>
<AdditionalFiles Include="mixin\IDName.mixin" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Morris.Moxy" Version="1.5.0" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>

</Project>

Generated Files​

Those are taken from $(BaseIntermediateOutputPath)\GX

// Generated from mixin\IDName.mixin at 2025-07-24 04:40:53 UTC
namespace MorrisMoxyDemo
{

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true)]
internal class IDNameAttribute : Attribute
{
}
}


Useful​

Download Example (.NET C#)​

Share MorrisMoxy​

https://ignatandrei.github.io/RSCG_Examples/v2/docs/MorrisMoxy

aaa

Category "Templating" has the following generators:​

1 Gobie Nuget GitHub Repo stars 2023-08-22

2 InlineComposition Nuget GitHub Repo stars 2025-07-22

3 InterceptorTemplate Nuget GitHub Repo stars 2023-11-29

4 JKToolKit.TemplatePropertyGenerator Nuget GitHub Repo stars 2024-07-17

5 Microsoft.NET.Sdk.Razor.SourceGenerators 2023-04-16

6 NTypewriter Nuget GitHub Repo stars 2025-01-19

7 RazorBlade Nuget GitHub Repo stars 2023-04-16

8 RazorSlices Nuget GitHub Repo stars 2024-10-27

9 RSCG_IFormattable NugetNuget GitHub Repo stars 2024-06-29

10 RSCG_Templating NugetNuget GitHub Repo stars 2023-10-07

11 spreadcheetah Nuget GitHub Repo stars 2023-08-13

12 Tortuga.Shipwright Nuget GitHub Repo stars 2025-07-21

See category​

Templating