私のプログラムには、いくつかのクラスと2つのフォームがあります。私の最初のフォーム "Main"には、2番目のフォーム "formSettings"とログファイルを開くボタンが表示されるボタンがあります。クラスを静的クラスとして使用できるかどうかをどのように知ることができますか?
FormSettings formSettings = new FormSettings();
LogClass objectLog = new LogClass();
public void settingsToolStripMenuItem1_Click(object sender, EventArgs e)
{
//shows the settings form
formSettings.Show();
}
private void viewLogToolStripMenuItem1_Click(object sender, EventArgs e)
{
try
{
objectLog.OpenLogFile();
}
catch (Exception ee)
{
objectMessageBox.ReturnErrorOpeningLogPrompt(ee.ToString());
}
}
[メインフォーム]は、[設定]フォームと[ログ]クラスの両方のインスタンスを作成します。私の設定クラスは、Logオブジェクトのインスタンスも作成します。私が今問題になっているのは、ログクラスが設定クラスのエントリに基づいていくつかの検証を行いますが、ログクラスを呼び出すか、無限ループで終了するため、設定クラスのオブジェクトを呼び出すことができません。ここでは、それが行う検証です。
public void Write_Log_Data(string data)
{
//Create an outfile stream
FileStream outfile = new FileStream(fileLocation,
FileMode.Append, FileAccess.Write);
StreamWriter writer = new StreamWriter(outfile);
if (objectSettings.chbxLogScanResults.Checked == true)
{
if (data == null || data == "")
{
//this is for logging ip addresses
writer.WriteLine(Properties.Settings.Default.IPAddressNew + CONST_TAB +
GetDateTime());
}
//because logs containing errors or changed ips are not null data they trigger this section
else
{
//the error was already formatted so just write it
writer.WriteLine(data);
}
//close our writers
writer.Close();
outfile.Close();
}
}
ログファイルは静的であるべきですか?静的にすることはできますか?いずれかのフォームからLogClassの一部であるLogOpen()メソッドを呼び出せますが、上記のように、ログクラスを呼び出すフォームのエントリに基づいて何らかのチェックが行われます。私は静的クラスとしてログファイルを使用することができない場合は、これを試す良い解決策かもしれません(静的なクラスは非常によく私の尋ねるので理解しません)。