我有一个空接口IProvider
和另一个名为ICountryProvider
的接口,该接口继承自IProvider
。我在这样声明的字典中存储了各种“提供程序”。
Dictionary<string, IProvider> dic;
现在,当我想获得特定的“提供商”实现时,将其设为ICountryProvider
,我将执行以下操作:
var countryProvider = (ICountryProvider)dic["country"];
现在,我担心性能,因为这将在对我的API的每个请求上执行。所以,我想问一下,这是转换操作吗,它涉及到任何与反射相关的操作吗?
object
到ICountryProvier
以及从IProvider
到ICountryProvider
的转换之间是否存在性能差异?
答案 0 :(得分:1)
CLR(命令语言运行时)在运行时管理显式强制转换,检查对象类型树以确保强制转换有效,即正在强制转换的对象与该类型兼容。如果此检查失败,它将抛出InvalidCastException
以保持类型安全。
据我所知,还没有进行缓存。