Tipo di inizializzazione di eccezione quando si utilizza un campo statico
-
29-09-2019 - |
Domanda
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TypeIntailization_Exception
{
class TypeInit
{
// Static constructor
static TypeInit()
{
}
static readonly TypeInit instance = new TypeInit();
public static TypeInit Instance
{
get { return instance; }
}
TypeInit() { }
}
class TestTypeInit
{
static public void Main()
{
TypeInit t = TypeInit.Instance;
}
}
}
quando si esegue questo ottengo Tipo intialization eccezione come posso evitare questo ...
Soluzione
Il TypeInitializationException viene generata quando viene generata un'eccezione dall'inizializzatore di classe (nel tuo esempio static TypeInit()
.
Si può vedere la vera eccezione esaminando la proprietà InnerException
del TypeInitializationException:
static public void Main()
{
try
{
TypeInit t = TypeInit.Instance;
}
catch (TypeInitializationException tiex)
{
var ex = tiex.InnerException;
Console.WriteLine("Exception from type init: '{0}'", ex.Message);
}
}
Altri suggerimenti
Si stanno gettando un'eccezione nel costruttore della classe Singleton, in modo che il momento in cui si sta cercando di costruirlo viene generata un'eccezione. Questo viene avvolto nel TypeInitializationException come vedete.
. Soluzione: non un'eccezione meno che non sia warrented
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow