"Dispatcher" 模式是什么,我该如何在代码中实现它?
我有一个泛型对象的属性包,并希望将其检索委托给一个泛型方法。
目前,我有一些属性在包中查找特定的键。例如:
private Dictionary<String, Object> Foo { get; set; }
private const String WidgetKey = "WIDGETKEY";
public Widget? WidgetItem
{
get
{
return Foo.ContainsKey(WidgetKey) ? Foo[WidgetKey] as Widget: null;
}
set
{
if (Foo.ContainsKey(WidgetKey))
Foo[WidgetKey] = value;
else
Foo.Add(WidgetKey, value);
}
}
有人建议使用“调度器”模式可以使其更加通用,但我一直找不到一个好的描述或示例。
我正在寻找一种更通用的方法来处理属性包的存储和检索。
dynamic
是一种类型,可以绕过所有编译时检查,如果类型与您尝试执行的操作不匹配,则会在运行时出现错误。例如,(int)"text"
不是有效的并且无法编译,但是(int)(dynamic)"text"
对于编译器来说完全可以,并且在代码到达那里时会引发异常。有些情况下需要使用dynamic
,但应该仔细考虑。_(添加这个延迟很久的评论主要是为了将来访问此答案的任何人。)_ - Bobson