使生成的类成为内部类
本文关键字:内部类 | 更新日期: 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
}
}