簡體   English   中英

如何解決System.Reflection.TargetInvocationException'錯誤?

[英]How to resolve System.Reflection.TargetInvocationException' error?

我在應用程序中使用了MVVM Light庫,該庫提供了一個Ioc容器,稱為ViewModelLocator。 但是,當我在定位器中為新的視圖模型設置第二個屬性時,得到了System.Reflection.TargetInvocationException

我通過查看內部異常調試了此錯誤,似乎由於未在定位器中指定向其他VM傳遞參數而拋出此錯誤。

有誰知道如何在定位器類中設置ViewSubjectGradeViewModel屬性,以說明傳遞給該模型的ScoreModel參數?

這是ViewModelLocator供參考:

namespace LC_Points.ViewModel
{
    /// <summary>
    /// This class contains static references to all the view models in the
    /// application and provides an entry point for the bindings.
    /// </summary>
    public class ViewModelLocator
    {
        public ViewModelLocator()
        {
            ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

            SimpleIoc.Default.Register<MainViewModel>();
            SimpleIoc.Default.Register<ViewSubjectGradeViewModel>();    
        }

        public MainViewModel MainPage
        {
            get { return ServiceLocator.Current.GetInstance<MainViewModel>(); }
        }

        public ViewSubjectGradeViewModel ViewSubjectGradePage
        {
            get { return ServiceLocator.Current.GetInstance<ViewSubjectGradeViewModel>(); }
        }

        public static void Cleanup()
        {
            // TODO Clear the ViewModels
        }
    }
}

這是我要在locator類中為其設置屬性的新VM:

namespace LC_Points.ViewModel
{
    public class ViewSubjectGradeViewModel 
    {
        public ViewSubjectGradeViewModel(IEnumerable<ScoreModel> addedSubjectGradePairs)
        {
            this.AddedSubjectGradePairsCopy = addedSubjectGradePairs;           
        }

        //Property for collection passed from MainViewModel
        public IEnumerable<ScoreModel> AddedSubjectGradePairsCopy { get; set; }         
    }
}

您沒有默認的構造函數。

在C#中,只要您指定一個接受參數的構造函數,默認構造函數(空構造函數)就會被刪除。 您可以指定默認的構造函數( public ViewSubjectGradeViewModel(){} ),也可以告訴服務定位器如何實例化對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM