当前位置: 首页 > 知识库问答 >
问题:

在viewmodel中使用单音崩溃

罗伟志
2023-03-14

我有目前的用户(在我的应用程序是医生):

sealed class CurrentDataStorage
    {

        private static CurrentDataStorage dataStorage;

        private CurrentDataStorage()
        {

        }

        public static CurrentDataStorage DataStorage
        {
            get
            {
                if(dataStorage == null)
                {
                    dataStorage = new CurrentDataStorage();
                }
                return dataStorage;
            }
        }



        public Doctor CurrentDoctor { get
            {
                return CurrentDoctor;
            }
            set
            {
                if(CurrentDoctor != value)
                    CurrentDoctor = value;
            }
        }
    }

如果我在viewmodel类中使用它,我的应用程序就会崩溃。也许医生是空的。我在授权页面中创建了一些医生(它是用户在后端创建的存根):

public void OnAuthorization(object sender, EventArgs a)
        {
            CurrentDataStorage.DataStorage.CurrentDoctor = new Doctor("Иван", "Иванов", "Иванович", "house_md@gmail.com", "superdoctor321",
                        "Princeton Plainsboro", Model.Enums.Position.Researcher, Model.Enums.Category.Highest, Model.Enums.AcademicDegree.Doctor);
            Application.Current.MainPage = new ProfilePage();
        }

页面代码如下所示:

public ProfilePageMaster()
        {
            InitializeComponent();

            this.BindingContext = new ProfilePageMasterViewModel();
        }

        class ProfilePageMasterViewModel : INotifyPropertyChanged
        {
            Doctor doctor;

            public ProfilePageMasterViewModel()
            {
                doctor = CurrentDataStorage.DataStorage.CurrentDoctor;
            }

            public String FullName
            {
                get
                {
                    return doctor.FullName;
                }
            }

            #region INotifyPropertyChanged Implementation
            public event PropertyChangedEventHandler PropertyChanged;
            void OnPropertyChanged([CallerMemberName] string propertyName = "")
            {
                if (PropertyChanged == null)
                    return;

                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
            }
            #endregion
        }

我在使用单例中做错了什么?

UPD:这份坠机报告(它什么都没告诉我)

构建指纹:“小米/kenzo/kenzo:6.0.1/MMB29M/8.11.8:用户/释放密钥”修订版:“0”ABI:“arm64”pid:10207,tid:10207,名称:hecksorexamarin

回溯:#00 pc 0000000000019d54/system/lib64/libc。所以(memcpy 332)#01 pc 0000000000 1094F4/data/app/Mono。AndroidDebugRuntime-1/lib/arm64/libmonosgen-64bit-2.0。所以

共有1个答案

万俟渊
2023-03-14

你的错误很可能与单身无关。你的财产是杀手——它正在访问自己:

public Doctor CurrentDoctor 
 { 
    get
    {
       return CurrentDoctor;
    }
    set
    {
         if(CurrentDoctor != value)
            CurrentDoctor = value;
    }
 }

使用支持字段

 private Doctor _currentDoctor
 public Doctor CurrentDoctor 
 { 
    get
    {
       return _currentDoctor;
    }
    set
    {
         if(_currentDoctor != value)
            _currentDoctor = value;
    }
 }
 类似资料:
  • 问题内容: 我正在尝试在我的角度应用程序中包括以下Bootstrap可折叠面板。但是,当我单击“展开”时,似乎可以看到角度,然后将其重定向到主页,而不是折叠面板。我的路由看起来像这样,我认为是引起问题的原因。有什么建议? 面板- 问题答案: 作为一个类似的问题mentionned,简单地由数据目标属性改变您的href

  • 我通过MVVM模式和谷歌jetpack依赖性开发了一个应用程序。我有一个,它有一个我需要的方法。我有两个视图,分别是和,首先我在中创建了实例,并通过ViewModel向观察者订阅LiveData: 现在,我将在中执行操作方法,并观察 但我跟踪创建实例

  • 我正在Eclipse中创建一个应用程序,现在我想在我的项目中使用appcompat库。我已经成功地导入了这个库,当我用AppCompatActivity扩展一些活动时,它工作得很好。问题是,当我运行应用程序时,我的应用程序启动由AppCompActivty扩展的活动。应用程序崩溃。Log Cat正在显示NoClassDefFoundError:请为我指引正确的方向。谢谢

  • 问题内容: 我没有使用过元素。我没有使用表格,因为,我不想回发..请指导我如何做ajax调用,从而能够将viewmodel传递给控制器​​的action方法获得$.ajax吗?我的表格如下所示: HTML: jQuery / JavaScript: 问题答案: 您应该手动从输入中收集数据,并构造与C#模型类相对应的JSON对象。例如,如果您在操作方法中等待ProductViewModel对象,则可

  • 当我尝试使用基于本教程的MapFragment时,并且我使用以下布局: