C# 从其他实例访问静态对象
我有一个C# 从其他实例访问静态对象,c#,static,instance,C#,Static,Instance,我有一个程序类,它有: private static ClientBase objClientBase = new ClientBase(new List<RecordType> { RecordType.none }, ModuleType.Monitor); static void Main(string[] args) { objClientBase.Connect(); //IRRELEVANT objQueueMon = ne
程序类
,它有:
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
}
请注意,它们在不同的文件中分开,但主类实例是在Program类中创建的
在我的程序类中,我想访问objClientBase
我是否必须创建一个构造函数方法并传递它,或者公开访问它?
因此,我想要实现的是,在主类中,执行一个
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();
}
}
请显示更多的代码,很难从两行代码中推断出任何东西。我添加了一些,但不需要更多。两个建议的解决方案都可以,如果您询问哪一个更好,那么考虑到显示的代码量很小,这是非常主观的,很难确定。
public class Main
{
private ClientBase _clientBase;
public Main(ClientBase clientBase)
{
_clientBase = clientBase;
}
public void SomeMethod()
{
// Use ClientBase.FUNCTION here
_clientBase.FUNCTION();
}
}