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