2 回答
TA贡献1866条经验 获得超5个赞
您可以使用事件。该类MessageOrigin
将是发布者,该类Printer
将是订阅者。优点是以后您可以添加更多订阅者,而无需更改类MessageOrigin
。
class Printer
{
MessageOrigin mo = new MessageOrigin();
public Printer()
{
mo.NewMessage += PrintMessage; // Subscribe to the event
}
void PrintMessage(string message)
{
Console.WriteLine(message);
}
}
class MessageOrigin
{
public event Action<string> NewMessage; // Declare the event
public void GetMessage()
{
string msgs = Get_All_Message();
NewMessage?.Invoke(msgs); // Raise the event
}
}
TA贡献1898条经验 获得超8个赞
如果我理解正确,我认为你不需要代表(尽管)你可以使用它。如果您想访问 Printer 类/对象。
我的建议是(如果您的体系结构允许的话)将打印机对象的引用传递给 MessageOrigin 类。
你可以这样实现:
public class Printer
{
private MessageOrigin mo;
public Printer()
{
mo = new MessageOrigin(this);
}
public void printMessage(string message)
{
Console.WriteLine(message); // message here should come from the MessageOrigin class
}
}
public class MessageOrigin
{
private Printer _parentPrinter;
public MessageOrigin(Printer print)
{
_parentPrinter = print;
}
public string Get_All_Message()
{
//implementation
return string.Empty;
}
public void GetMessage() {
var msgs = Get_All_Message();
SendMessageToPrintClass(msgs);
}
public void SendMessageToPrintClass(string message) {
// how do I send the "message" parameter back to the Printer class
_parentPrinter.Message = message //note that you need to implement your message method/property.
}
}
- 2 回答
- 0 关注
- 85 浏览
添加回答
举报