繁体   English   中英

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

[英]c# Access a DataTable from all classes in project (using properties)

我有一个正在致力于帮助自学c#.net的应用程序。 我已经开始使用类来组织我的项目,并省去了在任何地方复制/粘贴代码的麻烦。

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

我制作了一个名为“ 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);

        }

我从构建数据表的frmMain调用BuildDtLog(),然后调用AppendtoLog(“ 1”,“ Info”,“ This is a test log entry”); 单击frmMain上的按钮,该条目将添加到数据表中。

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

我研究了属性,通过几个示例进行了研究,并了解了它们的工作方式,并且它们可以在这种情况下为我提供帮助,但是我真的很难理解如何将其实现到我的情况中。 有人可以帮忙吗?

谢谢

使您的日志类及其功能静态,并从任何类中调用该功能

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM