gpt4 book ai didi

c# - System.TypeInitializationException : The type initializer for 'MyApp.Core.App' threw an exception

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:41 26 4
gpt4 key购买 nike

我正在编写 Xamarin.Forms 应用程序。它之前工作正常,但现在它在我的 Android 项目的这一行抛出异常:

global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());

它抛出异常:

System.TypeInitializationException: The type initializer for 'MyApp.Core.App' threw an exception.

构造函数甚至没有被调用。我什至不知道我做了什么导致了这个……有谁知道吗?

这是我的 App.xaml.cs 代码

public partial class App : Application
{
public static INavigation Navigation
{
get;
set;
}

public static Lazy<LoungeListPage> LoungeListView { get; set; } = new Lazy<LoungeListPage>();
public static Lazy<LoungePage> LoungeView { get; set; } = new Lazy<LoungePage>();
public static Lazy<EditFencePage> FenceView { get; set; } = new Lazy<EditFencePage>();
public static Lazy<NewFencePage> NewFenceView { get; set; } = new Lazy<NewFencePage>();
public static ILoungeService LoungeService { get; set; } = new LoungeService();
public static ILoginService LoginService { get; set; } = new LoginService();

public App ()
{
InitializeComponent();

DependencyService.Register<PlatformDependentCode>();
DependencyService.Get<IPlatformDependentCode>().OnFirstPageLoaded = this.OnFirstPageLoaded;

var rootPage = new NavigationPage(new MyApp.Core.MainPage());
MainPage = rootPage;
App.Navigation = rootPage.Navigation;
}

protected override void OnStart ()
{
// Handle when your app starts

Plugin.Geolocator.CrossGeolocator.Current.DesiredAccuracy = 0.001;
}

protected override void OnSleep ()
{
// Handle when your app sleeps
}

protected override void OnResume ()
{
// Handle when your app resumes
}

private void OnFirstPageLoaded()
{
var deviceInfo = DependencyService.Get<IPlatformDependentCode>().GeneralPlatformDependent.GetDeviceInfo();
LoginService.InitializeDevice(deviceInfo);
}
}

在 App.xaml 中

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.Core.App">
<Application.Resources>

<!-- Application resource dictionary -->

</Application.Resources>
</Application>

最佳答案

请参阅 TypeInitializationException 的文档(参见 here)

The exception that is thrown as a wrapper around the exception thrown by the class initializer.

您的类型初始化程序代码似乎抛出了异常。由于没有静态构造函数,我不会怀疑 new Lazy<T>()抛出异常,我猜问题出在

public static ILoungeService LoungeService { get; set; } = new LoungeService();
public static ILoginService LoginService { get; set; } = new LoginService();

据说其中一个抛出异常。您可以通过从构造函数创建实例并记录该异常(暂时)来进行检查。

public static ILoungeService LoungeService { get; set; }
public static ILoginService LoginService { get; set; }

public App ()
{
try
{
LoungeService = new LoungeService();
LoginService = new LoginService();
}
catch(Exception e)
{
Debug.WriteLine(e);
throw;
}

InitializeComponent();

// ...
}

(或立即使用您的 DependencyService 注册)。

关于c# - System.TypeInitializationException : The type initializer for 'MyApp.Core.App' threw an exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com