我有2类,打印机和MessageOrigin。 打印机实例化MessageOrigin。在MessageOrigin类中,我可以获取所需的消息,但是我必须将其返回给Printer类,以便可以在控制台上编写它。我认为我必须使用委托和事件筹集者来做到这一点。那里有很多教程和说明,但是很难理解它,更不用说实现它了。通过解决我在这里遇到的问题,可能会更容易理解如何使用它。请参阅下面的示例代码,并教我们如何在C#中使用委托和事件引发。
Class Printer
{
MessageOrigin mo = new MessageOrigin();
printMessage(string message) {
console.WriteLine(message) // message here should come from the MessageOrigin class
}
}
class MessageOrigin
{
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
}
}
感谢您的耐心等候。
答案 0 :(得分:2)
您可以使用events。类unicodedata.normalize('NFKD', title)
将是发布者,而类MessageOrigin
将是订阅者。好处是以后您可以添加更多订户,而无需更改类Printer
。
MessageOrigin
答案 1 :(得分:1)
如果我理解正确,我认为您不需要委托(尽管可以使用)。如果要访问打印机类/对象。
我的建议是(如果您的体系结构允许)将打印机对象的引用传递给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.
}
}