Dar*_*ius 2 c# typeinitializeexception xamarin xamarin.forms
我正在编写 Xamarin.Forms 应用程序。它之前还可以工作,但现在它在我的 Android 项目的这一行上抛出异常:
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
Run Code Online (Sandbox Code Playgroud)
它抛出异常:
System.TypeInitializationException:“MyApp.Core.App”的类型初始值设定项引发异常。
构造函数甚至不会被调用。我什至不知道我做了什么导致这个......有没有人有任何想法?
这是我的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
在 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>
Run Code Online (Sandbox Code Playgroud)
请参阅TypeInitializationException(see here )的文档
作为类初始值设定项抛出的异常的包装器抛出的异常。
您的类型初始值设定项代码似乎抛出了异常。由于没有静态构造函数,我不怀疑new Lazy<T>()抛出异常,我猜问题出在
public static ILoungeService LoungeService { get; set; } = new LoungeService();
public static ILoginService LoginService { get; set; } = new LoginService();
Run Code Online (Sandbox Code Playgroud)
据说其中之一会引发异常。您可以通过从构造函数创建实例来检查并记录该异常(临时)。
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();
// ...
}
Run Code Online (Sandbox Code Playgroud)
(或立即向您注册DependencyService)。
| 归档时间: |
|
| 查看次数: |
4999 次 |
| 最近记录: |