[英]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.