На самом деле нет способа сделать это быстрее - но вы можете делать это реже, кэшируя данные. Универсальный служебный класс может быть удобным способом сделать это, например:
static class PropertyCache<T>
{
private static SomeCacheType cache;
public static SomeCacheType Cache
{
get
{
if (cache == null) Build();
return cache;
}
}
static void Build()
{
/// populate "cache"
}
}
Тогда ваш PropertyCache.Cache содержит данные только для Foo и т. Д. С ленивым населением. Вы также можете использовать статический конструктор, если хотите.