The answer depends on what language the DLL was written in.
If it was a .NET language then, as pointed out, you can use .NET Reflector.
If it's the older Visual Basic (pre-.NET), then the DLL is compiled as what's called p-code and there are a few options for doing some variations on decompiling.
Finally, if it's written in a language like C++, there is no direct way to obtain the source code. Such a DLL is compiled to machine language and can only be directly decompiled to assembly language.
So, again, it depends on the language used. And the answer might be that it's just not possible to get anything resembling the original source code.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…