Да, это возможно.
Для создания экземпляра вы должны использовать:
Type classType = Type.GetType("TestClass");
object instance = Activator.CreateInstance(classType);
И затем вызов Sub(23, 42)
на instance
выглядит следующим образом:
classType.InvokeMember("Sub", BindingFlags.InvokeMethod, null, instance, new object[] { 23, 42 });
Отражение используется (например), когда вы не знаете типы во время компиляции и хотите обнаружить их во время выполнения (например, во внешних библиотеках, плагинах и т. Д.).