Facilitates adding constraints for Enum and Delegate to types and methods.
See Milestones for release notes.
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.
See also Fody usage.
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 <ExtraConstraints/>
to FodyWeavers.xml
<Weavers>
<ExtraConstraints/>
</Weavers>
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>() {...}
}
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.