从其他实例访问静态对象

本文关键字:静态 对象 访问 实例 其他 | 更新日期: 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();
    }
}