如何将这个 Swift 函数翻译成 Xamarin.iOS/C#

本文关键字:Xamarin iOS 翻译 函数 Swift | 更新日期: 2023-09-27 18:33:06

我目前正在做一个练习,并希望将这个 Swift 函数转换为 Xamarin.iOS/C#。我会继续插下去,但如果有人能提供一些帮助,那就太棒了。

func setCollectionViewDataSourceDelegate
    <D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>
    (dataSourceDelegate: D, forRow row: Int) {
    collectionView.delegate = dataSourceDelegate
    collectionView.dataSource = dataSourceDelegate
    collectionView.tag = row
    collectionView.reloadData()
}

我无法弄清楚的是 Swift 中的方法签名如何转换为 C#

让我难倒在妈妈身上的签名片段是:

<D: protocol<UICollectionViewDataSource, UICollectionViewDelegate>>

上下文 - 是表视图的每一行都包含一个水平滚动的集合视图。上面的 func 通过 willDisplayCell 为表视图中的每一行调用。例如:

override func tableView(tableView: UITableView, willDisplayCell cell:UITableViewCell, 
forRowAtIndexPath indexPath: NSIndexPath) {
    //code..
    tableViewCell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row)
}

多亏了@Alexey。为需要此信息的任何其他人进行更新。这个放在自定义单元格类中的方法工作得很好(我利用了UICollectionViewDelegate/Datasource可用的接口(:

    public void SetCollectionViewDataSourceDelegate<T>(T dataSourceDelegate, int row) where T : IUICollectionViewDelegate, IUICollectionViewDataSource  
    {
        collectionView.Delegate = dataSourceDelegate;
        collectionView.DataSource = dataSourceDelegate;
        collectionView.Tag = row;
        collectionView.ReloadData ();
    }

如何将这个 Swift 函数翻译成 Xamarin.iOS/C#

void setCollectionViewDataSourceDelegate<D>(
D dataSourceDelegate, 
int row)
where D : UICollectionViewDataSource, UICollectionViewDelegate`

不过,我不知道 Xamarin 窗体中UICollectionViewDataSource, UICollectionViewDelegate类型的等效项。它们应该是某种接口。