我试图编写一个类的方法,该类应该将对象(例如文本框或标签)作为参数,并且每当需要向用户显示消息时,它使用该对象来显示消息
由于该类将在其他程序中使用,它应该是一个可移植的,它应该实现任何基于文本的对象(如标签或文本框等)的功能。
考虑以下方法:
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
}
有没有办法实现这个,或者这种编程不适合便携式类?
答案 0 :(得分:3)
我会采取不同的方法。我不会传入文本接收对象,而是使用委托传递文本:
public void TcpEndPoint(string IP, Action<string> setText)
{
setText(message);
}
然后可以使用lambda表达式调用它:
TcpEndPoint(someIp, t => yourTextBox.Text = t);
答案 1 :(得分:1)
你称之为text-based object
的是我假设Windows.Forms.Control。此类是Windows窗体中所有可视对象的基类。因此,您可以使用该类和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.
...
}