фона:Делегат возвращения данных зависит от вызывающего абонента
- У меня есть 1 ... * объекты одного и того же класса (X).
- Объектам предоставляется делегат, который извлекает данные для него.
- Все объекты класса X используют один и тот же делегат.
- Каждый объект класса X хочет получить другой набор данных.
- SDK, который я использую, объявил делегатом, что у него нет параметров.
Мне почему-то нужно проверить, какой объект вызывает делегат, и действовать в соответствии с этим.
Раздел кода 1: В следующем разделе показан фрагмент, в котором созданы объекты класса X. Как было отмечено комментарием GetRows определяется, чтобы быть «обратный вызов»
public void getTables() {
foreach(X currentTable in mapper.getTables()) {
MTables.Add(new X {
TableName = currentTable.getName(),
GetRows = getRows, //This is the delegate
Fields = Fields.ToArray()
});
}
}
раздел Код 2: Класс X объявляет делегат, как это:
public X.GetRowsHandler GetRows { get; set; }
public delegate IEnumerable<QvxDataRow> GetRowsHandler();
Код раздела 3: Вот псевдокод для функции "getRows"
private IEnumerable<QvxDataRow> getRows() {
// foreach row belonging to calling instance of class X
//yield return row;
}
Раздел 3 и раздел 1 объявлены в том же классе, используя примеры SDK.
Я искал решение за последние 5 часов, но я не могу обернуть голову делегатами. Некоторая предыдущая публикация в SO предложила использовать делегат.Caller, но я не понимаю, как она используется, и я даже не уверен, что она применима в этом случае?
Любое предложение, как с этим бороться?
Не совсем понятно, что вы пытаетесь сделать здесь. Какова ваша проблема? –