第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

教我們?nèi)绾问褂?Delegate 并在 C# 中引發(fā)事件

教我們?nèi)绾问褂?Delegate 并在 C# 中引發(fā)事件

C#
守著一只汪 2022-12-31 10:25:05
我有 2 個類,Printer 和 MessageOrigin。打印機實例化 MessageOrigin。在 MessageOrigin 類中,我可以獲得我需要的消息,但我必須將其返回給 Printer 類,以便將其寫入控制臺。我想我必須使用 Delegate 和 Event Raiser 來做到這一點。那里有很多教程和解釋,但真的很難理解它,更不用說實施它了。可能通過解決我在這里遇到的問題會讓你更容易理解如何使用它。請看下面我的示例代碼,教我們?nèi)绾卧?C# 中使用委托和引發(fā)事件。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    }}感謝您的耐心等待。
查看完整描述

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

    }

}


查看完整回答
反對 回復 2022-12-31
?
汪汪一只貓

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.

    }

}


查看完整回答
反對 回復 2022-12-31
  • 2 回答
  • 0 關(guān)注
  • 116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號