自定义事件处理程序的问题 class

Issue with EventHandler of a custom class

我正在从事一个旨在解释手指字母表某些部分的项目。为此,我正在使用 Kinect v1 和这两个项目:Lightbuzz.Vitruvius provides the main funcionality and Lightbuzz.Vitruvius.Fingertracking 检测指尖的能力(至少到目前为止是理论)。
将这两者结合在一起比挑战更乏味,但真正的挑战来自 EventHandler。您会看到有一个 HandController class 可以检测并显示手指。在这个 class 中是一个启动检测的 EventHandler。
适当更改所有内容后,Rider 现在报告此错误(我使用的是 .NET Framework 4.0):

  <LightBuzz.Vitruvius>\HandsController.cs:1706 The type 'LightBuzz.Vitruvius.HandCollection' must be convertible to 'System.EventArgs' in order to use it as parameter 'TEventArgs' in the generic delegate 'void System.EventHandler<TEventArgs>(object, TEventArgs)'

下面是EventHandler和要执行的代码:

 public event EventHandler<HandCollection> HandsDetected;
 private void HandsController_HandsDetected(object sender, HandCollection e)
        {
            // Display the results!

            if (e.HandLeft != null)
            {
                // Draw contour.
                foreach (var point in e.HandLeft.ContourDepth)
                {
                    kinectViewer.DrawEllipse(point, Brushes.Green, 2.0);
                }

                // Draw fingers.
                foreach (var finger in e.HandLeft.Fingers)
                {
                    kinectViewer.DrawEllipse(finger.DepthPoint, Brushes.White, 4.0);
                }
            }

            if (e.HandRight != null)
            {
                // Draw contour.
                foreach (var point in e.HandRight.ContourDepth)
                {
                    kinectViewer.DrawEllipse(point, Brushes.Blue, 2.0);
                }

                // Draw fingers.
                foreach (var finger in e.HandRight.Fingers)
                {
                    kinectViewer.DrawEllipse(finger.DepthPoint, Brushes.White, 4.0);
                }
            }
        }
// The object HandCollection is a seperate class as follows:
public partial class HandCollection
    {
        /// <summary>
        /// The tracking ID of the current body.
        /// </summary>
        public int TrackingId { get; set; }

        /// <summary>
        /// The left hand data of the current body.
        /// </summary>
        public Hand HandLeft { get; set; }

        /// <summary>
        /// The right hand data of the current body.
        /// </summary>
        public Hand HandRight { get; set; }
    }

我现在的问题是这个错误是什么意思,我该如何解决?我对 C# 的使用方法和内容的了解相对较少,所以请保持温和。我还发现将框架切换到 4.5 版可以解决这个问题,但还会产生更多问题。

如错误所示,您的 HandCollection class 不能用作事件处理程序委托中的参数。您可能有使用 .Net 4.0 的原因,因此请尝试使 class 继承自 System.EventArgs 并查看是否可行。否则我会建议切换框架。