Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 11.01.2016
Сообщений: 7
1

Типы возвращаемых значений

12.08.2016, 17:27. Показов 1478. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый.
Есть следующая проблема:

В БД две различные таблицы с данными (CLASS1, CLASS2).
Под них написано два класса.

Есть два вызова функции типа

C#
1
2
CLASS1 first = GetData("CLASS1", 1)
CLASS2 second = GetData("CLASS2", 1)
И сама функция примерно следующего вида:

C#
1
2
3
4
public GetData(string cls, int curID)
    {
        return _connection.Table<cls>().Where(x => x.ID == curID).FirstOrDefault();
    }
Функция написана неверно, поскольку никак не могу разобраться с этим.
После public нужно указать необходимый класс, но он становится известен только в момент вызова. Что нужно использовать в таком случае? и как мне в .Table<...> передать нужное мне значение, которое будет получено так же только при вызове функции?

Добавлено через 20 минут
Если я правильно понял, можно написать так:
public object GetData()

но остаётся вопрос, как передать в эту функцию нужный мне тип для .Table<>()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2016, 17:27
Ответы с готовыми решениями:

Реализация интерфейса и разные типы возвращаемых значений
Добрый день. Проблема следующего плана: необходимо, чтобы классы, реализующие интерфейс,...

Как сделать разные типы возвращаемых значений в одном методе
как сделать разные типы возвращаемых значений в одном методе? public static DateTime...

Что бы было возможно если контрвариантные типы-параметры могли бы быть типами возвращаемых значений?
Что бы было возможно если контрвариантные типы-параметры могли бы быть типами возвращаемых значений?

Несколько значений, возвращаемых функцией
Могут ли функции в PHP возвращать несколько значений?

2
Эксперт .NETАвтор FAQ
10418 / 5148 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.08.2016, 17:37 2
Цитата Сообщение от GrayFox Посмотреть сообщение
После public нужно указать необходимый класс, но он становится известен только в момент вызова. Что нужно использовать в таком случае? и как мне в .Table<...> передать нужное мне значение, которое будет получено так же только при вызове функции?
Вот так:
C#
1
2
3
4
5
6
CLASS1 first = GetData<CLASS1>(1);
....
public T GetData<T>(int curID) where T : IId
{
    return _connection.Table<T>().Where(x => x.ID == curID).FirstOrDefault();
}
Однако, ваши классы должны реализовать вот такой интерфейс:
C#
1
2
3
4
interface IId
{
    int ID { get; }
}
Это необходимо, поскольку внутри GetData вы обращаетесь к свойству ID, но этого свойства может не быть, если тип T - произвольный. Поэтому нужно требовать от этого типа наличия свойства ID.

Другой вариант - передавать в ваш метод предикат:
C#
1
2
3
4
5
6
CLASS1 first = GetData<CLASS1>(x => x.ID == 1);
 
public T GetData<T>(Predicate<T> condition)
{
    return _connection.Table<T>().Where(condition).FirstOrDefault();
}
В таком случае интерфейс пока не понадобится.
1
0 / 0 / 1
Регистрация: 11.01.2016
Сообщений: 7
12.08.2016, 18:01  [ТС] 3
У каждого класса ID выглядит таким образом, т.к. некоторые строки ещё придётся обновлять:

C#
1
2
[PrimaryKey, AutoIncrement, NotNull]
    public int ID { get; set; }
Сейчас попробую ваши советы.

Добавлено через 13 минут
Цитата Сообщение от Storm23 Посмотреть сообщение
Другой вариант - передавать в ваш метод предикат:
C#
1
2
3
4
5
6
CLASS1 first = GetData<CLASS1>(x => x.ID == 1);
 
public T GetData<T>(Predicate<T> condition)
{
    return _connection.Table<T>().Where(condition).FirstOrDefault();
}
В таком случае интерфейс пока не понадобится.
_connection.Table<T>() ссылается на "<Т> должен быть неабстрактным типом и иметь открытый конструктор без параметров"
.Where(condition) выдаёт ошибку преобразования из предиката в System.Linq.Exspressions...
0
12.08.2016, 18:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2016, 18:01
Помогаю со студенческими работами здесь

Отсортировать массив возвращаемых значений функции
Помогите пожалуйста с логикой! У меня есть функция класса Car, которая подсчитывает количество...

Напишите сумму всех возможных возвращаемых значений функции
Задача. Если приведённый текст содержит синтаксические или семантические ошибки с точки зрения...

Как регулировать количество значений, возвращаемых объектом типа Scanner?
Доброго времени суток. Не могу побороть один момент. Простенькая программка, поведение которой...

DataGridView. Типы значений.
Никак не понимаю, как можно считывать значения из таблицы в нужном мне формате (double). Приведу...

Посчитать только типы значений в записях
Есть таблица Сок Яблочный 0.5л Сок Яблочный 1л Сок Апельсиновый 1л Вода Архыз 1.2 Вода...

Когда использовать ссылочные типы, а когда использовать типы значений?
Как это определить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru