(на основе вашего примера кода выше)
Если честно, я не думаю, что это относится к вашей автомобильной иерархии, мне кажется, что вы хотите получить статические данные и использовать свой базовый класс в качестве контейнера для них с вашими потомственными типами в качестве ключа. Как видите, это приводит к некоторому неуклюжему или слишком сложному кодированию для чего-то простого.
Я был бы гораздо более склонен поместить ваши статические данные туда, где они должны быть (в данном случае) с самим классом Feature. Я не VB парень, поэтому этот фрагмент кода в C #.
Таким образом, в самом классе Feature есть static свойство (или метод)
public static IEnumerable<Feature> GetLuxuryFeatureSets
{
get
{
yield return new Feature() { Name = "Leather Seats" };
yield return new Feature() { Name = "Sunroof" };
}
}
И повторите для других ваших моделей. Так что теперь у вас есть контейнер для ваших статических данных, который имеет смысл, сам класс.