Uitableview 传递的Class.TableViewDataSource类型的对象不是从NSObject派生的?

Uitableview 传递的Class.TableViewDataSource类型的对象不是从NSObject派生的?,uitableview,xamarin,xamarin.ios,Uitableview,Xamarin,Xamarin.ios,当我执行以下操作时,我在尝试设置UITableView的数据源时,出现“传递的对象类型为Class.TableViewDataSource不派生自NSObject”错误 viewdidload { tableView.DataSource = new TableViewDataSource(al); } class TableViewDataSource : IUITableViewDataSource { publ

当我执行以下操作时,我在尝试设置UITableView的数据源时,出现“传递的对象类型为Class.TableViewDataSource不派生自NSObject”错误

    viewdidload {
        tableView.DataSource = new TableViewDataSource(al);
    }
    class TableViewDataSource : IUITableViewDataSource
        {
            public ArrayList listOfSellers
            {
                get;
                set;
            }

            public TableViewDataSource(ArrayList al) {
                listOfSellers = al; 
            }
            public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
            {
                var cell = (SellerCell)tableView.DequeueReusableCell("cell", indexPath);
                cell.seller.Text = (string)listOfSellers[indexPath.Row];
                return cell;
            }

            public nint RowsInSection(UITableView tableView, nint section)
            {
                return listOfSellers.Count;
            }
        }

知道为什么吗。

如果类是从接口派生的,则必须实现在其父接口中定义的所有方法

这里还需要实现
INativeObject
IDisposable
中的方法

public class TableViewDataSource : IUITableViewDataSource
{
    public IntPtr Handle { get; }

    public void Dispose()
    {

    }
}
但是,通常我们使用
UITableViewDataSource
。它派生自
IUITableViewDataSource
,我们只需要重写其中的方法

public class TableViewDataSource : UITableViewDataSource
{
    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {
        var cell = (SellerCell)tableView.DequeueReusableCell("cell", indexPath);
        cell.seller.Text = (string)listOfSellers[indexPath.Row];
        return cell;
    }

    public override nint RowsInSection(UITableView tableView, nint section)
    {
        return listOfSellers.Count;
    }
}