public void RegisterAvailableWidgets()
{
var types = Assembly.GetCallingAssembly().GetTypes();
var widgetsAsType = from type in types
where typeof(IWidget).IsAssignableFrom(type) && !type.IsInterface
select type;
foreach (var widgetAsType in widgetsAsType)
{
if (WidgetTypeIsAlreadyRegistered(widgetAsType)) continue;
AvailableWidgets.Add(GetModelFromType(widgetAsType));
}
}