从 class 继承时出现编译错误

Compile error when inheriting from class

这是我的 class 叫 BoolToVisibilityValueConverter:

public class BoolToVisibilityValueConverter : MvxValueConverter<bool, ViewStates>
{
    protected override ViewStates Convert(bool value, Type targetType, object parameter, CultureInfo culture)
    {
        return value ? ViewStates.Visible : ViewStates.Gone;
    }

    protected override bool ConvertBack(ViewStates value, Type targetType, object parameter, CultureInfo culture)
    {
        return ViewStates.Visible == value;
    }
}

它继承自 MvxValueConverter,它是一个带有参数 FromTo 的泛型 class。 MvxValueConverter 的源代码可以在 MvvmCross 存储库下的 Github 上找到 - MvxValueConverter.

我可以构建项目,运行 并查看它是否有效。我正在使用 Visual Studio 2015 和最新的 Xamarin 以及最新版本的 MvvmCross (4.0.0)

但是,在我们的 TeamCity 服务器上,同样的构建失败了:

[14:40:06][Csc] ValueConverters\BoolToVisibilityValueConverter.cs(10, 33): error CS0115: 'MyProject.Droid.ValueConverters.BoolToVisibilityValueConverter.Convert(bool, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override

[14:40:06][Csc] ValueConverters\BoolToVisibilityValueConverter.cs(15, 27): error CS0115: 'MyProject.Droid.ValueConverters.BoolToVisibilityValueConverter.ConvertBack(Android.Views.ViewStates, System.Type, object, System.Globalization.CultureInfo)': no suitable method found to override

来自 MSDN 的错误 CS0115 发生在 A method was marked as an override, but the compiler found no method to override 时。 TeamCity 已安装 Visual Studio 2013。

为什么我的构建失败了?

您需要打开 android 项目的 .csproj 文件,并手动添加对 System.Globalization

的引用