在Android本机AAR上嵌入.NET库的属性和操作

问题描述 投票:0回答:2

我将现有的Xamarin.Android .NET库添加到原生Android Studio项目中。我正在关注https://docs.microsoft.com/en-us/xamarin/tools/dotnet-embedding/上的指示并且一切正常,但我有一个问题不是Java专家:是否也可以将我的库中存在的C#属性和操作导出到Java(如ReturnAnyText)?

namespace export_test
{
    [Register("export_test.ClassToExport")]
    public class ClassToExport 
    {
        [Export("ClassToExport")]
        public ClassToExport()
        {
            // ...
        }

        [Export("DoSomething")]
        public void DoSomething()
        {
            // ...
        }

        public Action<string> ReturnAnyText { get; set;}
    }
}
android xamarin xamarin.android embeddinator
2个回答
0
投票

引擎盖下的属性只是get_PropertyName()和set_PropertyName()方法。所以是的,你也应该能够导出它们:

这看起来像是这样的:

public bool MyProp
{
    [Export]
    get;
    [Export]
    set;
}

或者如果你想给它们命名:

public bool MyProp
{
    [Export("GetMyProp")]
    get;
    [Export("SetMyProp")]
    set;
}

0
投票

我发现最简单的解决方案是不尝试导出C#委托,只是在方法执行结束时返回一个包含返回值的对象:

namespace export_test
{
    [Register("export_test.ClassToExport")]
    public class ClassToExport 
    {
        [Export("ClassToExport")]
        public ClassToExport()
        {
            // ...
        }

        [Export("DoSomething")]
        public MyResult DoSomething()
        {
            // ...
        }
    }

    [Register("export_test.MyResult")]
    public class MyResult
    {
        private string _Text;
        private int _Value;

        [Export("MyResult")]
        public MyResult(string text, int val)
        {
            _Text = text;
            _Value = val;
        }

        [Export("GetText")]
        public string GetText() { return _Text; }

        [Export("GetValue")]
        public int GetValue() { return _Value; }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.