Facilitates adding constraints for Enum and Delegate to types and methods.
Clone or download
Latest commit 830b73e Jun 24, 2018


Chat on Gitter NuGet Status

This is an add-in for Fody


Facilitates adding constraints for Enum and Delegate to types and methods.

Introduction to Fody


See also Fody usage.

NuGet installation

Install the ExtraConstraints.Fody NuGet package and update the Fody NuGet package:

PM> Install-Package ExtraConstraints.Fody
PM> Update-Package Fody

The Update-Package Fody is required since NuGet always defaults to the oldest, and most buggy, version of any dependency.

Add to FodyWeavers.xml

Add <ExtraConstraints/> to FodyWeavers.xml

<?xml version="1.0" encoding="utf-8" ?>

Your Code

public class Sample
    public void MethodWithDelegateConstraint<[DelegateConstraint] T> () {...}

    public void MethodWithTypeDelegateConstraint<[DelegateConstraint(typeof(Func<int>))] T> () {...}

    public void MethodWithEnumConstraint<[EnumConstraint] T>() {...}

    public void MethodWithTypeEnumConstraint<[EnumConstraint(typeof(ConsoleColor))] T>() {...}

What gets compiled

public class Sample
    public void MethodWithDelegateConstraint<T>() where T: Delegate {...}

    public void MethodWithTypeDelegateConstraint<T>() where T: Func<int> {...}

    public void MethodWithEnumConstraint<T>() where T: struct, Enum {...}

    public void MethodWithTypeEnumConstraint<T>() where T: struct, ConsoleColor {...}


Inspired by Jon Skeets blog post Generic constraints for enums and delegates.

Based mainly on code from Jb Evain's blog post Constraining generic constraints.


Straightjacket designed by Luis Prado from The Noun Project.