静的関数から非静的メンバーにアクセスすることはできません。非静的メンバーはクラスのインスタンスに関連付けられていますが、静的メンバーはクラス自体に関連付けられています。
オプションは次のとおりです。
static IDbConnection connection; //<- note the static keyword
private static bool OpenConnection()
{
try
{
connection.Open();
return true;
}catch(Exception ex) {}
}
とにかく、それは本当に悪いアプローチです。
それ以外の場合は、すべてを非静的にします。
IDbConnection connection; //<- now its an instance member.
private bool OpenConnection()
{
try
{
connection.Open();
return true;
}catch(Exception ex) {}
}
接続オブジェクトの正しいインスタンスを渡して開く必要があるかもしれません。何かのようなもの:
private static bool OpenConnection(IDbConnection connection)
{
try
{
connection.Open();
return true;
}catch(Exception ex) {}
}
今、あなたはただ電話することができますClass.OpenConnection(someConnection);
接続オブジェクトのインスタンスを 1 つだけ維持することはお勧めできません。必要なたびに、新しいインスタンスを作成し、接続を開き、クエリを実行して破棄します。より多くの文脈を見なければ、あなたが本当に欲しいものについて明確な答えを出すのは難しい. あなたの問題に対するより良い解決策への盲目的な推測:
private static IDbConnection GetConnection()
{
try
{
var connection = new WhateverConnection(yourConnectionString);
connection.Open();
return connection;
}catch(Exception ex) {}
}
接続オブジェクトを使用してクエリを実行し、そこから破棄します。