I needed some help understanding recursive generics in C#.
I came across this code:
public abstract class Value<T> where T : Value<T>
{
....
}
public class UserId: Value<UserId>
{
}
I am confused by the part where the Value<T>
is used on both sides of the where clause. Can someone please explain what the code does?
It's known as a "Curiously recurring template pattern" . C# examples here and here. Often used for fluent syntax of interface types in order to keep the generic type "known" to the base implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With