在构造函数 VB.NET 中将共享 属性 值设置为 Me
Set shared property value to Me in constructor VB.NET
我尝试创建 Template10 UWP template 的 VB.NET 版本。
模板几乎准备就绪,但执行后我在 Shell.xaml.vb 文件中收到一条错误消息。这个class:
的原始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 class 工作?谢谢!
您对 'HamburgerMenu' 属性 的转换不正确。
使用:
Public Shared ReadOnly Property HamburgerMenu() As HamburgerMenu
Get
Return Instance.MyHamburgerMenu
End Get
End Property
原始 C# 使用 'expression-bodied' 成员作为 'HamburgerMenu' - 此功能在 VB 中不可用。
我尝试创建 Template10 UWP template 的 VB.NET 版本。
模板几乎准备就绪,但执行后我在 Shell.xaml.vb 文件中收到一条错误消息。这个class:
的原始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 class 工作?谢谢!
您对 'HamburgerMenu' 属性 的转换不正确。 使用:
Public Shared ReadOnly Property HamburgerMenu() As HamburgerMenu
Get
Return Instance.MyHamburgerMenu
End Get
End Property
原始 C# 使用 'expression-bodied' 成员作为 'HamburgerMenu' - 此功能在 VB 中不可用。