我尝试创建一个VB.NET版本的Template10 UWP template。在构造函数中为我设置共享属性值VB.NET
模板几乎就绪,但执行后我在Shell.xaml.vb文件中收到错误消息。这个类的原始C#代码:
public sealed partial class Shell : Page
{
public static Shell Instance { get; set; }
public static HamburgerMenu HamburgerMenu => Instance.MyHamburgerMenu;
Services.SettingsServices.SettingsService _settings;
public Shell()
{
Instance = this;
InitializeComponent();
_settings = Services.SettingsServices.SettingsService.Instance;
}
public Shell(INavigationService navigationService) : this()
{
SetNavigationService(navigationService);
}
public void SetNavigationService(INavigationService navigationService)
{
MyHamburgerMenu.NavigationService = navigationService;
HamburgerMenu.RefreshStyles(_settings.AppTheme, true);
HamburgerMenu.IsFullScreen = _settings.IsFullScreen;
HamburgerMenu.HamburgerButtonVisibility = _settings.ShowHamburgerButton ? Visibility.Visible : Visibility.Collapsed;
}
}
并且将转换后的版本中VB.NET:
Partial Public NotInheritable Class Shell
Inherits Page
Public Shared Property Instance As Shell
Public Shared Property HamburgerMenu As HamburgerMenu = Instance.MyHamburgerMenu
Public _settings As SampleApp.Services.SettingsServices.SettingsService
Public Sub New()
Instance = Me
InitializeComponent()
_settings = SampleApp.Services.SettingsServices.SettingsService.Instance
End Sub
Public Sub New(navigationService As INavigationService)
Me.New()
SetNavigationService(navigationService)
End Sub
Public Sub SetNavigationService(navigationService As INavigationService)
MyHamburgerMenu.NavigationService = navigationService
HamburgerMenu.RefreshStyles(_settings.AppTheme, True)
HamburgerMenu.IsFullScreen = _settings.IsFullScreen
HamburgerMenu.HamburgerButtonVisibility = If(_settings.ShowHamburgerButton, Visibility.Visible, Visibility.Collapsed)
End Sub
End Class
执行的入口点是:
Public Sub New(navigationService As INavigationService)
并发生异常在这条线上:
Instance = Me
异常消息:
类型“System.TypeInitializationException”的一个例外发生在SampleApp.exe但在用户代码中没有处理
其他信息:关于“SampleApp.Views.Shell”的类型初始引发一个例外。
InnerException:未将对象引用设置为对象的实例。
我该如何让这个VB.NET类工作?谢谢!
初始化代码将在构造函数之前运行,所以'Instance.MyHamburgerMenu'将是Nothing – Plutonix