Я не уверен, что точно понимаю ваш вопрос, но, надеюсь, это поможет вам в пути.
Если вы используете .NET 4.0, вы можете использовать новое ключевое слово "dynamic" для гораздо более простого отраженияcode:
dynamic myDynamicObj = "Hello World!"; // or Activator.CreateInstance...
var doesIndeed = myDynamicObj.StartsWith("Hello", StringComparison.OrdinalIgnoreCase);
Это действительно оценивает во время выполнения, поэтому убедитесь, что орфография / регистр и т. д. верны.
Редактировать: Предполагая, что вы всегда хотели вызывать методы с одним String-arg, возвращающим bool,Возможное решение - создать тип делегата -
delegate bool CompareString(String str);
, и второй аргумент Build будет иметь такой тип:
Build(String .., CompareString cs, String ...)
Но это не работает, если вам нужнодобавить дополнительные аргументы, как во втором аргументе типа StringComparison.Ответом может быть if / switch, то есть if (CompareString is StartsWith) ...
Извините, но не на компьютере с Windows, поэтому я не могу тестировать дальше.