Какие ключевые слова разрешены внутри Type.GetType ()? - PullRequest
0 голосов
/ 18 июня 2020

Меня смущает документация

public class Framework
{
    public StreamReader Reader;
    public CsvReader Csv;
    public string Path { get; set; }
    public DataTable Table;

    public Framework()
    {
        //Path = "file.csv";
        //Reader = new StreamReader(Path);
        //Csv = new CsvReader(Reader, CultureInfo.InvariantCulture);
        string[] ColumnNames = { "Name", "Phone", "Address" };
        Table = CreateTable(ColumnNames);
    }

    //args are the name of the columns
    public DataTable CreateTable(string[] args)
    {
        DataTable tbl = new DataTable();
        DataColumn column = new DataColumn();
        DataRow row;

        /* create columns */

        column.DataType = Type.GetType("Int32");
        column.ColumnName = "ID";
        tbl.Columns.Add(column);

        for (int i = 0; i < args.Length; i++)
        {
            column.DataType = Type.GetType("String");
            column.ColumnName = args[i];
            tbl.Columns.Add(column);
        }

        row = tbl.NewRow();
        row["ID"] = 1;
        tbl.Rows.Add(row);

        return tbl;
    }
}

Отладчик сообщает мне, что GetType() не распознает 'String'
Я читал, что могу сделать это здесь .
Эта программа представляет собой проект фреймворка. net, и все, что она делает в конце, это отображает datagridview с функцией нажатия кнопки, которая имеет только dataGridView1.DataSource = Framework.Table;
, программа не хоть показать, что я делаю не так? Я чувствую, что информации об этом нет ...

Ответы [ 3 ]

3 голосов
/ 18 июня 2020

Вам нужно будет написать полное имя типа, т.е.

column.DataType = Type.GetType("System.String");

Если вы всегда хотите получить строковый тип, вы также можете написать

column.DataType = typeof(string);

Используйте ваш метод, в котором вы используете строку для получения имени типа, только если вы не знаете во время компиляции, какой тип вам нужен.

1 голос
/ 18 июня 2020

Вы можете использовать Type t = typeof(string), Type.GetType("System.String") или typof(int).Assembly.GetType("System.String")

0 голосов
/ 18 июня 2020

Дайте вот так column.DataType = typeof(Int32);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...