使生成的类成为内部类

本文关键字:内部类 | 更新日期: 2023-09-27 17:51:18

在Xamarin中创建xaml页面时。窗体(例如,MyPage.xaml), Xamarin在名为MyPage.xaml.cs的文件中生成public partial class MyPage来表示此页面。

这对类施加了一定的限制:在该类方法的签名中引用的每个类(作为参数类型或返回类型)也必须是public

我试图绕过这个限制:是否有办法使生成的类internal或一些变通方法?

使生成的类成为内部类

在WPF XAML中,您可以使用x:ClassModifier="internal",但不幸的是Xamarin。Forms xaml是另一种方言。如果你看一下Xamarin。您将看到它没有为生成的类的访问修饰符使用任何配置:https://github.com/xamarin/Xamarin.Forms/blob/2d9288eee6e6f197364a64308183725e7bd561f9/Xamarin.Forms.Build.Tasks/XamlGTask.cs

你能做的是定义一个公共接口,并在一个内部类中实现它。

public partial class Page1 : ContentPage
{
    public Page1()
    {
        InitializeComponent();
        BindingContext = new Page1ViewModel();
    }
    public IWantToHideSomething Foo()
    {
        return new HiddenClass();
    }
}
public interface IWantToHideSomething
{
    void Bar(int x);
}
internal class HiddenClass : IWantToHideSomething
{
    public void Bar(int x)
    {
        // do something
    }
}