簡體   English   中英

C#-在沒有雙向引用的情況下在兩個項目之間進行通信

[英]C# - Communicate between two projects without two-way references

我有兩個項目:項目A和外部項目B(通過“在Visual Studio中添加現有項目”添加。項目A對項目B的引用,但是項目B對項目A的引用沒有。我有WinForm文本框在項目A中,我希望項目B能夠向其中寫入文本。由於項目B沒有對項目A的引用,因此無法調用我在項目A中創建的向文本框添加文本的方法。

我的問題:是否可以讓Project B調用該方法或將其寫入該Textbox 而無需添加項目引用?

盡管在C#中允許使用循環引用,但是循環引用通常是糟糕的體系結構決策的征兆。 這可能嗎?

void MyEventFunction(object sender, EventArgs e)
{
    string txt = MyClassFromB.GetStringFromB();
    textBox1.Text = txt;
}

理想情況下,您希望B的代碼在需要時僅提供所需的字符串,以便A可以控制其更新時間。

或者,您可以讓代表參與其中。

在B中:

public class MyClass
{
    public delegate void UpdateStringVar(string x);
    private UpdateStringVar usv;
    MyClass(UpdateStringVar v)
    {
        usv = v;
    } 

    void ContinuouslyRunningOperation()
    {
        string status = //get some string
        usv(status);
    }
}

在一個:

void UpdateTextBox(string x)
{ 
    textBox1.Text = x;
}

MyClass myClass = new MyClass(UpdateTextBox);

如果您的整個應用程序是單線程的,則類似的方法將起作用,但是WinForms控件具有令人討厭的“只能從創建它的線程訪問該對象”的要求,因此,如果您的B代碼在另一個線程上運行,則將需要額外的工作。 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM