将生成的类设为内部

时间:2016-06-26 16:51:04

标签: c# xaml xamarin xamarin.forms

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

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

我正试图解决这个限制:有没有办法让生成的类internal或一些解决方法?

1 个答案:

答案 0 :(得分:1)

在WPF XAML中你会用x:ClassModifier="internal"来做,但不幸的是Xamarin.Forms xaml是另一种方言。如果你看一下Xamarin.Forms代码生成器,你会发现它没有对生成的类的acces修饰符使用任何配置: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
    }
}