Java a C #: se extiende en genérico

Estoy tratando de convertir este código Java (Android) a c # (MonoDroid) pero no entiendo que el

 public class BalloonOverlayView extends FrameLayout 

Se está agregando una restricción al parámetro de tipo. Es análogo a la cláusula where en C #.

En Java, tienes:

 public class BalloonOverlayView extends FrameLayout 

Donde Item es un parámetro de tipo que debe subclasificar o implementar el tipo OverlayItem . En C # esto se escribiría como:

 public class BalloonOverlayView : FrameLayout where Item : OverlayItem 

Puede ver cómo la restricción se mueve al final, pero por lo demás es análoga. Es una práctica muy común en C # nombrar parámetros de tipo prefijados con una T , por lo que recomendaría el nombre TItem así:

 public class BalloonOverlayView : FrameLayout where TItem : OverlayItem 

Esto ayuda a aclarar la distinción bastante importante entre los parámetros de tipo y los tipos ordinarios.

Para una discusión sobre cuándo querría usar restricciones de tipo como esta, profundizo en esto en una respuesta anterior.

Es lo mismo que esto:

 public class BalloonOverlayView : FrameLayout where Item : OverlayItem 

o como sea que sea. No tengo VS en mi (Estoy en la computadora de un hotel)

Esto significa que el Item tipo parametrizado debe ser una subclase de OverlayItem

Semánticamente, esto implica que no tiene ningún sentido crear una instancia de BalloonOverlayView con un tipo parametrizado si no extiende OverlayItem