是否可以在将项目添加或更新为IDictionary之前创建事件?
public static IDictionary<string, Aircraft> aircraftList = new Dictionary<string, Aircraft>();
我就像这样使用它
MainForm.aircraftList[acNumber].FlightStatus = strFlying;
我想要做的是,如果新值为null,空字符串或int == 0
,则不更新该值飞机是一个有很多价值观的类,它们是字符串组合和双重组合......
或者有没有办法在课堂上做这种类型的动作?
目前我在任何地方这样做我通过if语句分配一个值,我假设有更好的方法吗?
答案 0 :(得分:2)
您可以推出自己的Dictionary
类并使用自定义Add()
函数(和其他函数)。像这样:
class MyCustomDictionary : Dictionary<string, Aircraft>
{
public new Add(string key, Aircraft value)
{
if (YOUR_CONDITION)
{
base.Add(key, value);
}
}
}
您应该在此处注意使用new
关键字。无法覆盖Add()
函数,因为基类未将其定义为overridable
。因此,您必须在定义中使用new
。
答案 1 :(得分:0)
我必须诚实地对你说,我对你要求的内容感到困惑......但是,我发现你的示例代码存在一些问题,可能导致你的问题。 #39;重新体验?
首先, IDictionary 是一个集合对象接口,但你将它视为一个数组,这对我来说有点可疑。
其次,飞机是一个类,但是在为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方法/ Invoke()。