背景:
- 我有 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 的一些帖子建议可以使用 delegare.Caller ,但我不明白它是如何使用的,我什至不确定它是否适用于这种情况?
任何建议如何处理这个问题?