Fody
This is an add-in forFacilitates adding constraints for Enum and Delegate to types and methods.
The nuget package
https://nuget.org/packages/ExtraConstraints.Fody/
PM> Install-Package ExtraConstraints.Fody
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 manly on code from Jb Evains post Constraining generic constraints
Icon
Straightjacket designed by Luis Prado from The Noun Project