2 回答

TA貢獻1866條經(jīng)驗 獲得超5個贊
您可以使用事件。該類MessageOrigin
將是發(fā)布者,該類Printer
將是訂閱者。優(yōu)點是以后您可以添加更多訂閱者,而無需更改類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條經(jīng)驗 獲得超8個贊
如果我理解正確,我認為你不需要代表(盡管)你可以使用它。如果您想訪問 Printer 類/對象。
我的建議是(如果您的體系結(jié)構(gòu)允許的話)將打印機對象的引用傳遞給 MessageOrigin 類。
你可以這樣實現(xiàn):
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 關(guān)注
- 116 瀏覽
添加回答
舉報