[英]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.