向 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() 。
是否可以在将项目添加或更新到 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() 。