I can explain why you see it a little, it will not be useful to solve your problem. I also do not know how the CLR associates interface methods with their implementation; it is insanely optimized.
The problem is that jitter must generate code for a method that contains an invocation of an interface method. But he still cannot know the identity of the object reference. This is not 100% accurate until the code is executed. So what he does is to allocate a stub, a place for the target method. And generates a CALL statement for this stub. The actual name of this stub method does not matter; it will disappear again when the real target method is resolved.
The stub itself generates a call to the CLR to resolve the target method, now knowing the true identification of the object reference and thus which specific implementation method to execute. And corrects the machine code, so the CALL address is replaced. Therefore, the next time the method is executed, you do not pay the price for binding the method, and the call is executed at the maximum possible strain rate.
As noted, the name of the stub does not matter because it is temporary. Giving it an interface method name is very useful for diagnosing a MissingMethodException. A good idea.
The real problem is that the assembly that was loaded is not the one with which you created your code. Probably the old one you forgot to redistribute. Or you just forgot to rebuild it when you changed the interface because it is not part of the solution. Thus, it does not have an implementation of the interface method, the CLR detects this very late when the stub is executed. Thus, you see the name of the stub method in the call stack.
source share