向 IDictionary 或 class 添加前事件

adding a before event to either an IDictionary or class

是否可以在将项目添加或更新到 IDictionary 之前创建事件?

public static IDictionary<string, Aircraft> aircraftList = new Dictionary<string, Aircraft>();

我是这样使用的

MainForm.aircraftList[acNumber].FlightStatus = strFlying;

我想做的是如果新值是 null、空字符串或 int == 0 则不更新值

Aircraft 是一个 class,有很多值,这些值是字符串 int 和双精度的混合...

或者有没有办法在 class 中执行此类操作?

目前我在通过 if 语句赋值的任何地方都这样做,我认为有更好的方法吗?

您可以推出自己的 Dictionary class 并使用自定义 Add() 函数(和其他函数)。像这样:

class MyCustomDictionary : Dictionary<string, Aircraft>
{
  public new Add(string key, Aircraft value)
  {
    if (YOUR_CONDITION)
    {
      base.Add(key, value);
    }
  }
}

你应该注意这里使用了new关键字。 Add() 函数不能被覆盖,因为基础 class 没有将它定义为 overridable。所以你必须在你的定义中使用new

老实说,我对您的要求有点困惑...但是,我注意到您的示例代码存在一些问题,这些问题可能会导致您的问题正在体验?

首先,IDictionary 是一个集合对象接口,但您却将其视为一个数组,这对我来说有点可疑。

其次,Aircraft 是一个 class,但您在为 FlightStatus 设置值时并未初始化它。

所以你应该做的是:

aircraftList.Add(strKey, new Aircraft() {FlightStatus = strFlying});

Aircraft ac = new Aircraft();

// set the ac values
ac.FlightStatus = strFlying;

aircraftList.Add(strKey, ac);

您可以在将对象添加到字典之前添加条件语句。

最后,当询问添加前置事件时,您的意思是什么?如果您遵循 dotNET 的示例,您可以在 Add() 方法声明中添加您自己的 OnBeforeEvent method/Invoke() 。