我试图通过重新实现其中一个父类作为扩展方法的接口来解决C#中的双重继承问题。
我遇到的问题是
event EventHandler<EventArgs> Disconnecting;
public static void OnDisconnected(this AutoConnectClientBase target)
{
target.ClientConnectionState = ConnectionState.Disconnected;
target.Disconnected(target, EventArgs.Empty);
}
无法在扩展方法中调用。
我得到:***。断开连接只能出现在+ =或 - =
的左侧
虽然这很有道理,但在这种情况下我希望不是这样。
我正在寻找的是一种解决方法,允许我在扩展代码中访问我的界面的EventHandlers。我想保持它尽可能简单,因为我正在进入一个接口的类已经被很多类访问了,这是我一开始不情愿地做出的改变。
答案 0 :(得分:1)
不确定此处出现的问题 - 您显示的代码与您引用的错误不符(无法拨打.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());
}
}
答案 1 :(得分:0)
我通过以下方式解决了这个问题:
在界面之外
public delegate EventHandler<EventArgs> MyEventHandler(object sender, EventArgs e);
然后在界面
event EventHandler<EventArgs> Disconnecting;
变为
MyEventHandler Connected {get; set;}