如何在 c# Xamarin 中实现与 iOS 用于表视图的“委托”或“数据源”模式等效的模式?例如,我希望有如下视图类:
public class MyDataView : UIView
{
public interface ISource
{
int NumberOfPages();
}
public ISource DataSource { get; set; }
}
但问题是当我使用以下代码从 MyViewController 调用它时:
this.myDataView.DataSource=new ViewSource(this)
public class ViewSource : MyDataView.ISource
{
private readonly MyViewController parentController;
public ViewSource(MyViewController parentController)
{
this.parentController=parentController;
}
}
那么 MyViewController 永远不会因为创建了循环引用而被垃圾收集。
这似乎是一个普遍的要求,那么人们使用什么设计呢?
我应该让 Source 成为弱参考吗?在 C# 中是如何完成的?调用者可能不知道它是弱引用,这不是很危险吗?