#1,066 – Constraining a Type Parameter on a Generic Interface
April 2, 2014 Leave a comment
You can constrain a type parameter on a generic interface so that it can be used only as the output type of methods in the interface and not as a type of any method parameters. You do this using the out keyword on the type parameter.
public interface FirstAndLast<out T> { T First(); T Last(); void AddThing(T item); // won't compile }
This seems like an odd thing to do, but ensuring that a particular type parameter is used only as output allows us to later use this generic interface covariantly. (I’ll explain this in an upcoming post).