Да, вы можете вызвать CacheManager.CodeLookup, используя отражение.
На основании кода, которым вы поделились, это будет примерно так:
Type containingType = typeof (CacheManager);
var method = containingType.GetMethod("CodeLookup",
BindingFlags.Static | BindingFlags.Public, null, new Type[0], new ParameterModifier[0]);
var concreteMethod = method.MakeGenericMethod(targetType);
Dictionary<string,int> codes = (Dictionary<string,int>)concreteMethod.Invoke(null, null);
Возможно, вы захотите кэшировать экземпляр concreteMethod
для каждого targetType, если вы часто используете метод, отражение может быть дорогостоящим с точки зрения производительности.
Редактировать : когда метод перегружен, чтобы соответствовать определенной перегрузке; используйте перегрузку GetMethod, которая позволяет вам указать точные параметры, проход в пустой массив (так как перегрузка, которую вы хотите вызвать, не имеет параметров). Пример кода обновлен.