от
Поэтому я создаю свою первую основную текстовую мобильную ролевую игру, чтобы познакомиться с Xamarian.Forms и узнать больше о c #. У меня настроено меню и основная домашняя страница, чтобы я мог связать данные из игровой логики с некоторыми ярлыками и кнопку, чтобы проверить, работает ли мой логический код правильно. Я привязал данные и мой метод к меткам и кнопкам, поэтому я ожидаю, что домашняя страница будет отображаться, но каждый раз, когда я иду на отладку, происходит сбой, и я получаю это сообщение об ошибке. "Необработанное исключение: System.TypeInitializationException: инициализатор типа для Engine.World вызвал исключение. " Я посмотрел на отдельные исключения, чтобы лучше понять проблему, и там говорится, что для LocationText, Locations и Player1 из моего класса World все установлено в null. Однако я почти уверен, что объявил и / или инициализировал эти значения. Вот мой класс World.cs:
using System;
using System.Collections.Generic;
using System.Text;

namespace Engine
{
    public static class World
    {
        public static decimal TrueDay = 1;
        public static string LocationText = World.Player1.CurrentLocation.Name.ToString();

        public static Player Player1;

        public static readonly List Locations = new List();

        public const int LOCATION_ID_OSHAWA = 1;
        public const int LOCATION_ID_TORONTO = 2;

        static World()
        {
            PopulateLocations();            
        }

        private static void PopulateLocations()
        {
            Location oshawa = new Location(LOCATION_ID_OSHAWA, "Oshawa");
            Location toronto = new Location(LOCATION_ID_TORONTO, "Toronto");

            Locations.Add(oshawa);
            Locations.Add(toronto);
        }

        public static Location LocationByID(int id)
        {
            foreach (Location location in Locations)
            {
                if (location.ID == id)
                {
                    return location;
                }
            }

            return null;
        }
    }
}
Вот мой App.xaml.cs, где я инициализирую Player1 из класса World:
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using Engine;

namespace TestApp
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            //this is where exception is thrown
            World.Player1 = new Player("Jordan", World.LocationByID(World.LOCATION_ID_OSHAWA), 5000);

            MainPage = new KingPinMasterDetailPage();


        }

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

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

        protected override void OnResume()
        {
            // Handle when your app resumes
        }
    }
}
И мой HomePageViewModel.cs, если это окажется актуальным. Я заметил пару раз, когда я изменял свойства на статические и из статических, чтобы попытаться исправить проблему, было выдвинуто одно и то же исключение, в котором говорится, что контекст привязки домашней страницы был нулевым, а не свойства и переменные класса World.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;
using Engine;

namespace TestApp
{
    public class HomePageViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public static Player _player = World.Player1;

        public decimal Day = World.TrueDay;
        public decimal CurrentDay
        {

            get { return Day; }

            set { Day = value; OnPropertyChanged(); }
        }

        public decimal MoneyValue = Convert.ToInt32(Math.Floor(World.Player1.PlayerMoney));
        public decimal Money
        {

            get { return MoneyValue; }

            set { MoneyValue = value; OnPropertyChanged(); }
        }

        public string CurrentLocation = _player.CurrentLocation.Name;
        public string PlayerLocation
        {

            get { return CurrentLocation; }

            set { CurrentLocation = value; OnPropertyChanged(); }
        }

        public void Onturn()
        {

            World.TrueDay = World.TrueDay   1;

            World.Player1.PlayerMoney = World.Player1.PlayerMoney   1000;
        }

        void OnPropertyChanged([CallerMemberName] string name = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }
    }
}

это где это исключение будет брошено
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace TestApp
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class HomePage : ContentPage
    {
        public HomePage()
        {
            InitializeComponent();

            //this is where the other exception would throw
            BindingContext = new HomePageViewModel();
        }
    }
}
Я надеюсь, что предоставил всю необходимую информацию. Я провел дни, просматривая весь Интернет и другие подобные сообщения с этого сайта, пытаясь исправить эту проблему, чтобы я мог продолжить работу с моим приложением. Сейчас я в основном стою на месте. Я знаю, что это, вероятно, что-то прямо передо мной, например, статическая неправильная переменная или что-то простое, но по какой-то причине я просто не вижу этого. Любая помощь будет высоко ценится. Спасибо за ваше время!              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...