Мой код для этого использует отражение и строки, которые я ему даю, вместо ввода пользователя.В конечном итоге я хотел бы, чтобы пользователь мог сказать «float» «2.0» и заставить компьютер сказать: «Да, это float, или« bool »,« abc », на который компьютер сказал бы, что это не булево, о котором он слышал.
Было бы достаточно просто взять пользовательский ввод и преобразовать его в имя типа примитива, например «string» в «System.String», «float» в «System.Single» и т. Д. (Хотяесли вам известна функция для этого, это тоже было бы здорово.)
Вот код:
Console.WriteLine("1.0 => {0}", System.Single.Parse("1.0")); // this works fine.
Type t = Type.GetType("System.Single"); // for parsing floats
MethodInfo mi = t.GetMethod("System.Single.Parse"); // "ambiguous" if use "Parse"
object[] parameters = new object[] { "1.0" };
float f = (float)(mi.Invoke(null, parameters)); // get null exception here.
Console.WriteLine("Was succesfully parsed to: " + f);
Но я продолжаю получать нулевое исключение со второй до последней строки.Что там происходит?