C# C:通过单例类访问类实例时,如何修复System.TypeInitializationException?
例外情况详情: 我试图从singleton类检索表单实例,但得到System.TypeInitializationException:“form.Single”的类型初始值设定项引发了异常。” Singleton类如下所示C# C:通过单例类访问类实例时,如何修复System.TypeInitializationException?,c#,winforms,class,singleton,C#,Winforms,Class,Singleton,例外情况详情: 我试图从singleton类检索表单实例,但得到System.TypeInitializationException:“form.Single”的类型初始值设定项引发了异常。” Singleton类如下所示 class Single { public Form1 Form { get; private set; } public Menu MenuForm { get; private set; } public RandomFacts RandomFac
class Single
{
public Form1 Form { get; private set; }
public Menu MenuForm { get; private set; }
public RandomFacts RandomFactsForm { get; private set; }
public QuizMenu QuizMenuForm { get; private set; }
public AskHowManyQuestions AskHowManyQuestionsForm { get; private set; }
private static readonly Form1 _form1 = new Form1();
private static readonly Menu _menu = new Menu();
private static readonly RandomFacts _randomFacts = new RandomFacts();
private static readonly QuizMenu _quizMenu = new QuizMenu();
private static readonly AskHowManyQuestions _askHowManyQuestions = new AskHowManyQuestions();
private static readonly Single _single = new Single();
private Single()
{
Form = _form1;
MenuForm = _menu;
RandomFactsForm = _randomFacts;
QuizMenuForm = _quizMenu;
AskHowManyQuestionsForm = _askHowManyQuestions;
}
public static Single GetSingle()
{
return _single;
}
Form1类中引发TypeInitializationException以检索该类实例的代码:
var MenuForm = Single.GetSingle().MenuForm;
如何阻止抛出此异常?感谢阅读。异常意味着静态初始化中的某些内容正在引发异常。困难在于您的类在静态初始值设定项中创建了5个对象,而您不知道是哪个对象引发了异常 我现在会放弃单例模式,只使用实例方法,直到你发现问题所在。然后,如果您需要单例模式,现在还不清楚为什么要这样做,如果问题可能在野外发生,那么添加异常处理和/或日志记录,以便能够在运行时识别问题
顺便说一句,我不会叫你们班单身。已经有一个名为Single的框架类,像我这样的临时观察家会对此感到困惑。我可以称之为更具描述性的SingletonFormManager或类似的东西。您发布的代码没有显示您所描述的问题。请提供一个我可以从包含的屏幕截图中看到的内部异常。带有消息参数的ArgumentException无效。它的细节应该告诉你实际的问题在哪里。