关于c#:是否可以从Xamarin Java绑定库中公开索引器?

Is it possible to expose an indexer from a Xamarin Java bindings library?

我正在创建一个XAMARIN Java绑定库。在我的Java代码中,我的一个类看起来是这样的:

1
2
3
4
5
public class ColoringList {
    public long get(int index) { ... }

    public void set(int index, long element) { ... }
}

我希望在C中的绑定库中公开此内容:

1
2
3
4
public class ColoringList
{
    public long this[int index] { get; set; }
}

是否有任何方法可以修改Xamarin的Metadata.xml文件以使其公开,而不是

1
2
public long Get(int index);
public void Set(int index, long element);

?谢谢。


对于其他遇到此问题的人,解决方法是1)在Metadata.xml中进行内部方法:

1
2
3
4
5
6
<attr
    path="/api/package[@name='com.bluejay.repository']/class[@name='ColoringList']/method[@name='get']"
    name="visibility">internal</attr>
<attr
    path="/api/package[@name='com.bluejay.repository']/class[@name='ColoringList']/method[@name='set']"
    name="visibility">internal</attr>

然后,在名为YourClass.Manual.cs的绑定库中创建一个文件,并添加以下代码来包装这些方法:

1
2
3
4
5
6
7
8
public partial class YourClass
{
    public T this[int index]
    {
        get => Get(index);
        set => Set(index, value);
    }
}