如何将任何可以显示文本的对象传递给 C# 方法

How to pass any object that can display text to a C# method

我正在尝试编写一个 class 的方法,它应该获取一个对象(例如文本框或标签)作为参数,并且在需要向用户显示消息时使用该对象显示消息。

由于 class 将在其他程序中使用,因此它应该具有一定的可移植性,并且应该实现对任何基于文本的对象(例如标签或文本框等)的功能。

考虑以下方法:

public void TcpEndPoint(string IP,/* a text-based object */)
{ 

    // There's a need to show a message 
    // to the user by the text-based object

}

有什么方法可以实现这个,或者这种编程不适合便携式 classes?

你所说的 text-based object 我假设是 Windows.Forms.Control。此 class 是 windows 形式中所有视觉对象的基础 class。所以你可以使用 class 和 get 它是 Text 属性.

public void TcpEndPoint(string IP, Control _object)
{ 
    ...
    MessageBox.Show(_object.Text);/// or in any other way you like.
    ...
}

更新:

如果你想 set 对象的 Text 属性 并在 上显示消息 ,就像这样使用它这个:

public void TcpEndPoint(string IP, string message, Control _object)
{ 
    ...
    _object.Text = message; /// or in any other way you like.
    ...
}

我会选择不同的方法。我不传递文本接收对象,而是使用委托传递文本:

public void TcpEndPoint(string IP, Action<string> setText)
{
    setText(message);
}

然后可以使用 lambda 表达式调用它:

TcpEndPoint(someIp, t => yourTextBox.Text = t);