首页 文章

是否可以从Xamarin Java绑定库中公开索引器?

提问于
浏览
0

我正在创建一个Xamarin Java绑定库 . 在我的Java代码中,我的一个类看起来像这样:

public class ColoringList {
    public long get(int index) { ... }

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

我希望从C#中的绑定库中公开它:

public class ColoringList
{
    public long this[int index] { get; set; }
}

有没有办法修改Xamarin的 Metadata.xml 文件,所以这会暴露而不是

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

?谢谢 .

1 回答

  • 0

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

    <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 的文件,并添加以下代码以包装方法:

    public partial class YourClass
    {
        public T this[int index]
        {
            get => Get(index);
            set => Set(index, value);
        }
    }
    

相关问题