gpt4 book ai didi

c# - 我怎么知道一个类是否可以用作静态类?

转载 作者:行者123 更新时间:2023-11-30 15:41:03 25 4
gpt4 key购买 nike

我的程序有几个类和 2 个表单。我的第一个表单“Main”有一个按钮将显示第二个表单“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() 方法,但如上所示,根据调用日志类的一种形式的条目进行了一些检查。如果我不能将日志文件用作静态类(我不太了解静态类,因此我会问),尝试这个可能是一个好的解决方案。

最佳答案

是的,LogClass 绝对可以是静态的,事实上,如果从多个位置访问它,它可能更好。

但是,您需要更改表单设置与日志类的通信方式。您需要向日志类添加静态属性以存储表单中的值,或者您需要将表单中的值传递给日志类中的方法。

例如,如果您的用户在您的设置表单中清除了 chbxLogScanResults,那么您可以立即使用此信息更新 LogClass,或者在保存设置表单时更新 LogClass(我更喜欢在保存时这样做,这样如果用户取消表格的更改,您不会错误地记录首选项)。

关于c# - 我怎么知道一个类是否可以用作静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com