从另一个Project C调用类#

时间:2015-09-01 15:36:44

标签: c#

我真的需要你的帮助,并想出这个。

我的项目:

AccessProjectMap -- MainClass.cs -- ErrorLog.cs (public) ThreadProjectMap -- StartThread.cs

我想在项目启动时将StartThread设为我的默认项目。现在我需要ThreadProjectMap中的ErrorLog.cs文件。我做了一个参考,我实际上可以说ErrorLog log = new ErrorLog();也可以。当我尝试在MainClass.cs中使用ErrorLog时,它也正常工作。

但是我不能在main或DoThreading函数中使用log

class StartThread {

    static string threadRefresh = ConfigurationManager.AppSettings.Get("refreshTime").ToString();

    Access ac = new Access();
    ErrorLog log = new ErrorLog();

    static void Main(String[] args) {
        log.LogMessageToFile("== Start Main() ==");
        Thread t = new Thread(new ThreadStart(DoThreading));
        t.Start();
        Console.Read();
    }

    static void DoThreading() {
        int refresh = 1;

        while (true) {

            Console.WriteLine("Test");
            log.LogMessageToFile("== Test - inside Thread ==");

            Thread.Sleep(1000);

        }

    }
}

2 个答案:

答案 0 :(得分:3)

问题不在于不同的项目/命名空间,而是尝试以静态方法访问实例成员

制作log字段static,它应该可以正常编译。

static ErrorLog log = new ErrorLog(); //Here, make it static

static void Main(String[] args) {
    log.LogMessageToFile("== Start Main() ==");
    Thread t = new Thread(new ThreadStart(DoThreading));
    t.Start();
    Console.Read();
}

答案 1 :(得分:2)

您在此行上创建ErrorLog的实例:

ErrorLog log = new ErrorLog();

是实例变量。 MainDoThreading方法是静态的。

您有两个选择:将ErrorLog设为静态,如下所示:

static ErrorLog log = new ErrorLog();

或者,只需在静态方法中实例化它。