Heim >Backend-Entwicklung >C++ >Wie vermeide ich „Objektverweis nicht auf Instanz eines Objekts festgelegt' beim Abrufen von Verbindungszeichenfolgen aus App.config?

Wie vermeide ich „Objektverweis nicht auf Instanz eines Objekts festgelegt' beim Abrufen von Verbindungszeichenfolgen aus App.config?

Susan Sarandon
Susan SarandonOriginal
2025-01-14 22:56:48350Durchsuche

How to Avoid

Zugriff auf Verbindungszeichenfolgen aus App.config: Vermeidung von NullReferenceExceptions

Das Abrufen von Verbindungszeichenfolgen aus Ihrer App.config-Datei erfordert eine sorgfältige Handhabung, um NullReferenceException Fehler zu vermeiden. Betrachten Sie das folgende Codebeispiel:

<code class="language-csharp">var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);</code>

Dieses Code-Snippet, wenn es mit einer Standard-App.config-Datei wie dieser verwendet wird:

<code class="language-xml"><?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" 
         name="Test" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration></code>

kann ein NullReferenceException auslösen, wenn die Verbindungszeichenfolge „Test“ nicht gefunden wird. Das Problem besteht darin, direkt auf .ConnectionString zuzugreifen, ohne nach null zu suchen.

Eine robuste Lösung besteht darin, die Existenz der Verbindungszeichenfolge zu überprüfen, bevor auf ihre Eigenschaften zugegriffen wird:

<code class="language-csharp">var connectionString = ConfigurationManager.ConnectionStrings["Test"];
if (connectionString != null)
{
    var connection = ConnectionFactory.GetConnection(connectionString.ConnectionString, DataBaseProvider);
    // ... use the connection ...
}
else
{
    // Handle the case where the connection string is not found.  
    // Log an error, throw an exception, or use a default connection.
}</code>

Alternativ kann ein prägnanterer Ansatz mit dem Null-Bedingungsoperator (?.) verwendet werden:

<code class="language-csharp">var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]?.ConnectionString, DataBaseProvider);</code>

Dadurch wird der Nullfall ordnungsgemäß behandelt, indem connection auf Null gesetzt wird, wenn „Test“ fehlt. Denken Sie daran, in diesem Szenario eine entsprechende Fehlerbehandlung hinzuzufügen.

Denken Sie abschließend daran, einen Verweis auf System.Configuration.dll in Ihr Projekt aufzunehmen. Diese Assembly stellt die notwendigen Klassen für den Zugriff auf Konfigurationseinstellungen bereit. Ohne diesen Verweis schlägt die Kompilierung fehl.

Das obige ist der detaillierte Inhalt vonWie vermeide ich „Objektverweis nicht auf Instanz eines Objekts festgelegt' beim Abrufen von Verbindungszeichenfolgen aus App.config?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn