Skip to content

Fody/ExtraConstraints

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

ExtraConstraints.Fody

Chat on Gitter NuGet Status

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

This is an add-in for Fody

It is expected that all developers using Fody become a Patron on OpenCollective. See Licensing/Patron FAQ for more information.

Usage

See also Fody usage.

NuGet installation

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

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

The Install-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

<Weavers>
  <ExtraConstraints/>
</Weavers>

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 {...}
}

Credit

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.

Icon

Straightjacket designed by Luis Prado from The Noun Project.

About

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

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages