I am trying to convert this Java (Android) code to c# (MonoDroid) but I don't understand the <Item extends OverlayItem>
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
I am trying to convert this Java (Android) code to c# (MonoDroid) but I don't understand the <Item extends OverlayItem>
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
It's adding a constraint to the type parameter. It's analogous to the
where
clause in C#.In Java, you have:
Where
Item
is a type parameter that must subclass or implement typeOverlayItem
. In C# this would be written as:You can see how the constraint is moved to the end, but otherwise analogous. It is very much common practice in C# to name type parameters prefixed with a
T
, so I would recommend the nameTItem
like so:This helps make clear the pretty important distinction between type parameters and ordinary types.
For a discussion on when you'd want to use type constraints like this, I go into this at length in a previous answer.
It is the same as this:
This means that the parametrised type
Item
has to be a subclass ofOverlayItem
Semantically, this implies that it makes to no sense to instantiate BalloonOverlayView with a parameterised type if it does not extend
OverlayItem