c#从项目中的所有类访问DataTable(使用属性)

时间:2016-08-13 10:12:54

标签: c# class properties datatable

我有一个应用程序,我一直在努力帮助自己教c#.net。我已经开始使用类来组织我的项目,并且无需在任何地方复制/粘贴代码。

在我的主窗体上,我有一个Datalist视图,我打算将其用作输出日志条目的控制台。

我创建了一个名为“logger”的类,其中包含以下内容:

    public DataTable DTLog = new DataTable();

public void BuldDTLog()
        {
            DTLog.Columns.Add("Time");
            DTLog.Columns.Add("Type");
            DTLog.Columns.Add("Level");
            DTLog.Columns.Add("Text");
        }

        public void AppendtoLog(String Level, String Type, String Text)
        {

            DTLog.Rows.Add(DateTime.Now, Level, Type, Text);

        }

我从构建DataTable的frmMain调用BuildDtLog() 然后我调用AppendtoLog(“1”,“Info”,“这是一个测试日志条目”);从frmMain上的按钮开始,条目被添加到数据表中。

我的问题是当我来自另一个类的数据表添加一个条目。我在AppendtoLog中得到“对象引用未设置为对象的实例”。 - 好像数据表不再存在了?

我看过属性,我已经通过几个例子来了解它们是如何工作的,并且他们可以在这种情况下帮助我,但我真的很难理解如何在我的情况下实现它。有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

使您的日志类及其函数保持静态,并从任何类

调用该函数
public static logger
{
 public DataTable DTLog = new DataTable();

public static void BuldDTLog()
        {
            DTLog.Columns.Add("Time");
            DTLog.Columns.Add("Type");
            DTLog.Columns.Add("Level");
            DTLog.Columns.Add("Text");
        }

        public static void AppendtoLog(String Level, String Type, String Text)
        {

            DTLog.Rows.Add(DateTime.Now, Level, Type, Text);

        }
}

public class otherClass
{
logger.BuldDTLog();
logger.AppendtoLog(param1,param2,param3);
}