BaseColumns不包含带0个参数的构造函数

时间:2016-04-13 19:23:19

标签: c# xamarin.android

我将Android Studio项目移植到Visual Studio / Xamarin。 我有这个Java代码:

public class EmployeeDataContract {
    public EmployeeDataContract() { }

    public static abstract class EmployeeDataEntry implements BaseColumns {
        public static final String TABLE_NAME = "tblEmployeeData"; // Local SQLLite table
        public static final String COLUMN_NAME_LOCAL_ID = "_id";

翻译成C#:

public class EmployeeDataContract {
    public EmployeeDataContract() {}

    public abstract class EmployeeDataEntry : BaseColumns  { // had to remove "static"
        public const string TABLE_NAME = "tblEmployeeData"; // Local SQLLite table
        public const string COLUMN_NAME_LOG_ID = "_id";

Visual Studio提供编译错误:
BaseColumns不包含带0参数的构造函数

那么我去查看BaseColumns并且它不包含构造函数,也不继承类(可能有构造函数),因此它继承自Object,应该有一个带0参数的构造函数。

有什么问题?

1 个答案:

答案 0 :(得分:1)

此处有关于此行为的错误报告:https://bugzilla.xamarin.com/show_bug.cgi?id=36791

基本上在Java中,这个接口只包含两个常量,定义了id和count列的名称。在C#接口中不能包含常量,因此这些常量会移动到您看到的抽象类。它不能被继承(在其他程序集中),因为它只有构造函数是内部的,子类应该调用父的构造函数。由于此接口仅包含 常量,因此xamarin不会为其生成(空)接口。

如果您手动移植代码(不绑定到Java库) - 也许您可以忽略继承此类,因为它无论如何都不提供任何有用的东西。当然,另一些代码可能只接受这个类的实例,但这不太可能。