4
我试图保存一个对象在一个通用的EventArgs类,但因为EventHandler有一个接口,我很难完成这一点。任何方式来得到这样的工作?通用事件参数界面
我EventArgs类:
public class PositionChangedEventArgs<T>
{
public PositionChangedEventArgs(byte position, T deviceArgs)
{
Position = position;
DeviceArgs = deviceArgs;
}
public byte Position { get; private set; }
public T DeviceArgs { get; private set; }
}
接口使用:
public interface IMoveable
{
event EventHandler<PositionChangedEventArgs<T>> PositionChanged;
}
实例类用法:
public class SomeDevice : IMoveable
{
public event EventHandler<PositionChangedEventArgs<DeviceSpecificEventMessageArgs>> PositionChanged; //Compiler doesn't like this
}
此。你有接口定义了一个具有泛型参数的事件,当实际实现具体的事件时无法定义该参数。如果您将整个接口设置为T的通用接口,则可以通过声明您正在实现事件参数类型的整个接口来关闭泛型。 – KeithS 2011-02-22 16:40:25