Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

199
Views
C# generic class type parameter and constraint that is the same as the generic parameter

The Stripe payment .NET API has a generic class definition like below and I'd like to understand why the constraint part StripeEntity<T> should be the type T.

public abstract class StripeEntity<T> : StripeEntity where T : StripeEntity<T>

From: https://github.com/stripe/stripe-dotnet/blob/master/src/Stripe.net/Entities/_base/StripeEntity.cs

I understand the generic syntax, but don't understand why the class is defined in this way, the thinking behind it. Is this a common pattern around generic classes and if so what are the benefits?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

It's called the curiously recurring pattern, usually used in C++.

It has a couple of things going for it, especially the fact that it's a (very limited) form of static polymorphism, and so avoids the costs of calling virtual functions. That has more value in C++ than in C# however, due to how the language and runtime are constructed.

.Net also has better ways of dealing with this, for example you could achieve something similar in a cleaner way by using attributes and source generators.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!