The answer depends on what language the DLL was written.
If it was a .NET language, then, as indicated, you can use the .NET Reflector.
If it is an older Visual Basic (pre-.NET), then the DLL is compiled as the so-called p-code, and there are several options for making some changes to the decompilation .
Finally, if it is written in a language like C ++, there is no direct way to get the source code. Such a DLL is compiled into machine language and can only be decompiled directly to assembler.
So, again, it depends on the language used. And the answer may be that it is simply impossible to get something similar to the source code.
Jonathan wood
source share