I really don’t know if this is a C# thing or an asp.net thing. I was looking at this article: http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/ and ran into this line:
public class GenericRepository<TEntity> : IRepository<TEntity> where TEntity : class
I’m fairly new to C#/ASP.NET so I don’t fully understand this line. What does the “where TEntity : class” do? I have never created a class with a “where clause” (is that even what it’s called).
It’s using generics (C# thing, nothing to do with ASP.NET).
<TEntity>is a generic type parameter, meaning you must specify the type of the GenericRepository.Like this:
The where clause says the type you supply must be a class.
It’s called a Derivation Constraint. It basically tells the compiler to enforce this constraint.
If you changed it to
where TEntity : int, the above code would fail.You would need this:
A note on
<TEntity>, this is not a keyword/reserved word. You could easily change it to<FooBar>andwhere FooBar : class. It has the T to indicate generics, and Entity to specify the Repository works off an Entity.Change the generic type parameter to whatever makes sense to you and your code.
By the way – that article is like my bible at the moment. 🙂