我正在将现有Xamarin.Android .NET库添加到本机Android Studio项目中。我遵循https://docs.microsoft.com/en-us/xamarin/tools/dotnet-embedding/上的指示,并且一切正常,但是我有一个不是Java专家的问题: 还可以将库中存在的C#属性和操作(例如 ReturnAnyText )导出到Java吗?
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;}
}
}
答案 0 :(得分:0)
内部的属性只是get_PropertyName()和set_PropertyName()方法。所以是的,您也应该能够导出这些内容:
这看起来像:
public bool MyProp
{
[Export]
get;
[Export]
set;
}
或者,如果您想命名它们:
public bool MyProp
{
[Export("GetMyProp")]
get;
[Export("SetMyProp")]
set;
}
答案 1 :(得分: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; }
}
}