簡體   English   中英

接口上的擴展方法; 代表

[英]Extension methods on an interface; delegates

我試圖通過將父類之一重新實現為具有擴展方法的接口來解決C#中的雙重繼承問題。

我遇到的問題是

event EventHandler<EventArgs> Disconnecting;

public static void OnDisconnected(this AutoConnectClientBase target)
        {
            target.ClientConnectionState = ConnectionState.Disconnected;
            target.Disconnected(target, EventArgs.Empty);
        } 

不能在擴展方法中調用。 我得到:***。斷開連接只能出現在+ =或-=的左側
盡管這很合理,但在這種情況下,我希望並非如此。

我正在尋找一種解決方法,該方法將允許我在擴展代碼中訪問接口的EventHandlers。 我想使它盡可能的簡單,因為我要在一個接口中創建的類已經被大量的類訪問,而這是我最不願意做的更改。

不確定問題出在哪里-您顯示的代碼與您引用的錯誤不符(不調用.Disconnecting

public interface IInterface
{
    event EventHandler Event;
    EventHandler Handler { get; set; }
}

public class Class : IInterface
{
    public event EventHandler Event;
    public EventHandler Handler { get; set; }

}

public static class InterfaceExtensions
{
    public static void DoSomething(this IInterface i)
    {
        i.Event += (o, e) => Console.WriteLine("Event raised and handled");
        i.Handler(i, new EventArgs());
    }
}

我通過執行以下操作解決了這個問題:
界面之外

public delegate EventHandler<EventArgs> MyEventHandler(object sender, EventArgs e);

然后在界面里面

event EventHandler<EventArgs> Disconnecting;

變成

MyEventHandler Connected {get; set;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM