TFS签入策略的Evaluate方法是否在静态对象上被调用?
TFS签入策略Evaluate方法的调用对象说明
嘿,我来帮你搞清楚这个问题!
结论先行:TFS签入策略的Evaluate方法并不是在静态对象上调用的,而是在你自定义策略类的实例对象上执行的。
为什么这么说呢?结合你贴的代码来看:
- 当TFS加载你的
AuditControlsPolicy签入策略时,会先创建这个类的实例——你构造函数里的System.Windows.Forms.MessageBox.Show("in constructor");就是最好的证明,策略初始化时这个弹窗会触发,说明实例已经被创建了。 Evaluate是PolicyBase基类定义的抽象实例方法,你必须在派生类里重写它的实现。TFS框架会调用这个已创建的策略实例的Evaluate方法,来执行签入前的规则检查。- 另外,你代码里定义的实例成员
list(构造函数里初始化的列表),如果Evaluate是静态调用的话,根本无法访问这个实例变量,但实际签入策略的逻辑往往需要依赖这类实例状态,这也从侧面印证了是实例调用的逻辑。
简单来说,TFS会为每个签入策略创建实例,然后调用实例的Evaluate方法完成检查,完全和静态对象无关~
内容的提问来源于stack exchange,提问作者codechurn
相关产品推荐
相关产品推荐

