0

我有一个Program class

private static ClientBase objClientBase = new ClientBase(new List<RecordType> { RecordType.none }, ModuleType.Monitor);
    static void Main(string[] args)
    {
        objClientBase.Connect(); //IRRELEVANT
        objQueueMon = new Main(); //<-INSIDE THIS IS WHERE I WANT TO ACCESS objClientBase
        objClientBase.MainModuleThreadManualResetEvent.WaitOne(); //IRRELEVANT
    }

Main class如您所见,此程序会创建一个实例:

objQueueMon = new Main();

请注意,它们在不同的文件中是分开的,但 Main 类实例是在 Program 类中创建的。

在我的 Program 类中,我想访问它objClientBase

我是否必须创建一个构造方法并传递它或对其进行公共访问?所以我想要实现的是,在 Main 类中,做一个objClientBase.FUNCTION

4

2 回答 2

0

你可以完全按照你刚才说的做:

public class Main {

    private ClientBase _caller;

    public Main (ClientBase caller) {
        _caller = caller;
    }

}

或者,您可以稍后设置

public class Main {

    private ClientBase _caller;

    public Main () {

    }

    // only your assembly sets it
    internal SetClientBase(ClientBase cb) {

        _caller = cb;
    }

    // but anyone gets it
    // Now you can let some client execute "Function"
    public ClientBase Caller {
        {return _caller;} 
    }

}

只是一个例子

于 2013-08-19T19:30:32.197 回答
0

更改Main类的构造函数以接受ClientBase对象,如下所示:

public class Main
{
    private ClientBase _clientBase;

    public Main(ClientBase clientBase)
    {
        _clientBase = clientBase;
    }

    public void SomeMethod()
    {
        // Use ClientBase.FUNCTION here
        _clientBase.FUNCTION();
    }
}
于 2013-08-19T19:30:56.297 回答