他不是这样的人,(所以)他不会做出那样的事.
前句是对他做出的客观评价,用一般现在时;后句是根据前句得出的结论,目的是为了判断以往的某件事是不是他做的.
另外,我没见过can和have done连用的形式,也可能是我孤陋寡闻了.
我还是认为B对.
补充:刚刚又查了一下语法书 B肯定是正确的.
He could not have done it that far(他不可能做到那种地步).也就是说,could have done
在某些时候就是单纯对过去某种情况的推测,不一定就是虚拟语气.我原来的解释看来有
问题,向您致歉!
参见 张道真《实用英语语法》