【发布时间】:2014-02-02 00:48:57
【问题描述】:
我有以下代码。 CustomControlHelper 通过反射生成对象的实例。在这个阶段,我们不知道我们正在处理什么类型的对象。我们确实知道它将是一个CustomControl,但我们不知道它是否实现了任何特定的接口,或者它是否扩展了任何其他类。下面的代码试图确定加载的控件是否实现了IRichAdminCustomControl接口。
Object obj = CustomControlHelper.GetControl(cc.Id, cc.ControlClass);
if(obj != null)
{
bool isWhatWeWant = (obj is IRichAdminCustomControl);
return isWhatWeWant;
}
没关系,但我注意到,当我知道我有一个实现 IRichAdminCustomControl 的对象时,表达式的计算结果为 false。
好的,这就是它变得非常奇怪的地方。如果我在调试时检查代码,表达式的计算结果为真,但如果我立即让代码运行并检查结果,它的计算结果为假(我在下面附上了一个动画 gif 来说明)。
以前有没有人遇到过这样的怪事,如果有,到底是什么原因造成的?
顺便说一句,我相信我使用的产品使用 Spring.NET 在 CustomControlHelper 中提供依赖注入。
【问题讨论】:
-
那张 GIF 图片吓到我一秒。
-
是的。我的鼠标怎么这样动???
-
你定义了多少个
IRichAdminCustomControl接口? VS 有机会选错吗? -
我已经盯着这个 GIF 看了一段时间了...
-
哈哈,很高兴你们都喜欢我的 gif。从现在开始,我会确保在每个问题中都包含一个 :)