【发布时间】:2014-11-20 06:24:19
【问题描述】:
目前,我有一个具有此签名属性的抽象类:
protected virtual IDictionary<Type, Action<object>> InitializationMap
{
get
{
return null;
}
}
一旦扩展,我会覆盖它,例如,像这样:
protected override IDictionary<Type, Action<object>> InitializationMap
{
get
{
return new Dictionary<Type, Action<object>>
{
{ typeof(INewSchoolWizardExtension), o => ((INewSchoolWizardExtension)o).InitializeWizard(this) },
{ typeof(INewSchoolProcessExtension), o => ((INewSchoolProcessExtension)o).Start() }
};
}
}
虽然它有效,但我真的不喜欢铸造部分,它确实使代码膨胀。
我在这里要做的是 - 为类型定义一个初始化映射。可以这么说,一旦它们稍后被解决,我会检查正在解决的类型并调用初始化程序。
我想用泛型来做这件事,但没有成功。
我如何实现行为,以便Action 始终期望它的键类型?
【问题讨论】:
-
只是出于好奇-您的财产是
virtual,似乎没有有意义的实现。为什么不改成abstract? -
@decPL,因为 abstract 是强制性的,并不是所有的类都需要它。
标签: c# generics types callback type-hinting