Это не так просто, как обрабатывать все слева от последней точки, как буквальное имя типа. Если у вас есть тип формы:
X.Y.Z.Type
тогда не обязательно, что X, Y и Z являются пространствами имен. Они также могут быть самими типами, а последующие части могут быть внутренними классами:
class X
{
class Y
{
// etc
}
}
Если это так, то Type.GetType ("X.YU") не будет преобразован в класс Y. Вместо этого clr разделяет внутренние классы символом +, поэтому вам действительно нужно вызвать Type.GetType ( "X + Y");
Если метод, который вы вызываете, это метод params , вам потребуется дополнительная работа. Вы должны свернуть параметры переменной в массив и передать это. Вы можете проверить переменные параметры, захватив данные ParameterInfo для метода и посмотрев, имеет ли последний параметр прикрепленный атрибут ParamArray .