从其他实例访问静态对象
本文关键字:静态 对象 访问 实例 其他 | 更新日期: 2023-09-27 18:28:11
我有一个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
}
这个Progam创建了一个Main class
实例,如您所见:
objQueueMon = new Main();
请注意,它们被分隔在不同的文件中,但是Main类实例是在Program类中创建的。
在我的程序类中,我想访问那个objClientBase
。
我必须创建一个构造函数方法并将其传递还是对其进行公共访问?因此,我想要实现的是,在Main类中,执行objClientBase.FUNCTION
你可以完全按照你刚才说的去做:
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;}
}
}
只是的一个例子
更改Main
类的构造函数以接受ClientBase
对象,如下所示:
public class Main
{
private ClientBase _clientBase;
public Main(ClientBase clientBase)
{
_clientBase = clientBase;
}
public void SomeMethod()
{
// Use ClientBase.FUNCTION here
_clientBase.FUNCTION();
}
}