当您在Xamarin.Forms(例如MyPage.xaml
)中创建xaml页面时,Xamarin会在名为public partial class MyPage
的文件中生成MyPage.xaml.cs
来表示此页面。
这对类强加了某些限制:在这个类的方法(作为参数类型或返回类型)的签名中引用的每个类也必须是public
。
我正试图解决这个限制:有没有办法让生成的类internal
或一些解决方法?
答案 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
}
}