This is perfectly valid:
public interface IWidgetGetter
{
    IEnumerable<T> GetWidgets<T>() where T : IWidget;
}
That is, it defines an untyped interface that includes a method to get a IEnumerable of some type that implements IWidget.
How do I make this into a property?
Things that don't work:
IEnumerable<T> Widgets<T> { get; set; } where T : IWidget
IEnumerable<T> Widgets { get; set; } where T : IWidget
IEnumerable<T> Widgets where T : IWidget { get; set; }
IEnumerable<T> Widgets<T> where T : IWidget { get; set; }
 
     
    