假设我有类A实例化类B.类B有一个构造函数和几个init方法(通过类接口强制执行)。如何编写fxcop规则以检查在实例化B之后是否至少调用了一个init方法。
如果你在运行时从互联网上加载它,你就不能使用构造函数,所以init。
答案 0 :(得分:1)
除了最琐碎的案例外,这种规则几乎不可能写出来。例如,如果要确保在调用B构造函数后立即调用B init方法,则可以相对容易地完成(尽管分支逻辑甚至可能导致问题)。但是,如果只需要支持这种微不足道的用法,就不需要单独的init方法。检测通常更有趣的是在调用其init方法之前尝试使用B实例执行其他操作的情况,并且这对于像FxCop这样的静态验证器来说并不是真正的工作。
如果在进入另一个方法时没有初始化它,你是否考虑过从B中抛出一个异常(就像有人可能从已处理的实例抛出一个ObjectDisposedException)?