MSTest 使用 as 运算符执行类型转换检查,然后在这种情况下调用 Dispose 方法:
private void RunTestCleanupMethod(object classInstance, TestResult result)
{
MethodInfo methodInfo = this.Parent.TestCleanupMethod;
try
{
try
{
if (methodInfo != null)
methodInfo.InvokeAsSynchronousTask(classInstance, (object[]) null);
Queue<MethodInfo> methodInfoQueue = new Queue<MethodInfo>((IEnumerable<MethodInfo>) this.Parent.BaseTestCleanupMethodsQueue);
while (methodInfoQueue.Count > 0)
{
methodInfo = methodInfoQueue.Dequeue();
if (methodInfo != null)
methodInfo.InvokeAsSynchronousTask(classInstance, (object[]) null);
}
}
finally
{
(classInstance as IDisposable)?.Dispose();
}
}