Rxd
@Rxd

Возможно ли автоматическое приведение типов в c#?

Есть функция, которая делает запрос к БД, в результате чего возвращает объект класса DataTable, который содержит результат запроса в удобном формате (список строк, каждая из которых содержит список столбцов). Каждая ячейка имеет тип FieldPair, в котором содержится название столбца и собственно его значение. Самое интересное, что мы изначально не может знать тип столбца БД, поэтому FieldPair.Valueимеет тип Object, чтобы можно было хранить в ней значения и string, и int. Однако, я заметил, что в отладчике тип этой переменной выглядит как "object (int/string)", в связи с чем возникает вопрос : возможно ли как-то использовать переменную Name сразу как string или допустим int без постоянного приведения типов (вроде (int)DataTable.Rows[i].Field[j]) ?
public class FieldPair
        {
            public string Name;
            public object value;

            public FieldPair(string _name, object _value)
            {
                Name = _name;
                value = _value;
            }
        }

private static DataTable Query(OleDbConnection dbConnect, OleDbCommand dbCommand, string sqlQuery, params Object[] values)
        {
            DataTable qResult = new DataTable();
            dbConnect.Open();
            dbCommand.CommandText = sqlQuery;
            genParamCollection(dbCommand, sqlQuery, values);

            OleDbDataReader reader = dbCommand.ExecuteReader();

            while (reader.Read())
            {
                Row tmpRow = new Row();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    tmpRow.Fields.Add(new FieldPair(reader.GetName(i), reader[i]));
                }
                qResult.Rows.Add(tmpRow);
            }

            reader.Close();
            dbCommand.Parameters.Clear();
            dbConnect.Close();

            return qResult;
        }
  • Вопрос задан
  • 319 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
dynamic?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
поэтому FieldPair.Name имеет тип Object

Не Name, а Value хотели сказать.

возможно ли как-то использовать переменную Name сразу как string или допустим int без постоянного приведения типов

Нельзя, приведение так или иначе где-то будет, либо в самом FieldPair, либо вне его. Да и зачем это?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы