Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C:通过单例类访问类实例时,如何修复System.TypeInitializationException?_C#_Winforms_Class_Singleton - Fatal编程技术网

C# C:通过单例类访问类实例时,如何修复System.TypeInitializationException?

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

例外情况详情: 我试图从singleton类检索表单实例,但得到System.TypeInitializationException:“form.Single”的类型初始值设定项引发了异常。”

Singleton类如下所示

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无效。它的细节应该告诉你实际的问题在哪里。