gpt4 book ai didi

c# - 接口(interface)中的通用事件参数

转载 作者:太空狗 更新时间:2023-10-30 00:27:49 25 4
gpt4 key购买 nike

我试图在通用 EventArgs 类中保存一个对象,但由于 EventHandler 有一个接口(interface),我很难完成此操作。有什么方法可以让这样的东西工作吗?

我的 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; }
}

正在使用的接口(interface):

public interface IMoveable
{
event EventHandler<PositionChangedEventArgs<T>> PositionChanged;
}

示例类用法:

public class SomeDevice : IMoveable
{
public event EventHandler<PositionChangedEventArgs<DeviceSpecificEventMessageArgs>> PositionChanged; //Compiler doesn't like this
}

最佳答案

您需要将接口(interface)定义更改为以下内容:

public interface IMoveable<T>
{
event EventHandler<PositionChangedEventArgs<T>> PositionChanged;
}

您可以像这样将类型传递给接口(interface)来使用它:

public class SomeDevice : IMoveable<DeviceSpecificEventMessageArgs>
{
public event EventHandler<PositionChangedEventArgs<DeviceSpecificEventMessageArgs>> PositionChanged;
}

关于c# - 接口(interface)中的通用事件参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com