His question was “How to call a function in a TsubclassOf” not “What is your opinion on design architecture for firing a weapon”.
I agree with what you say, but it wasn’t the question asked. Several even stated that it wasn’t possible and OP would have to spawn/create to call the method, which is inaccurate.
In addition, even using polymorphism and calling Fire() at a high level as you suggest, if the high level object is a TSubclassOf, OP would still need to know the answer to the original question that was asked, which is “How to call a function in a TsubclassOf”.
If someone searches that question they will come across this post as the top search return and it wouldn’t have answered the question being asked, but instead gave an opinion on a single over-specific use case.