See the question and my original answer on StackOverflow

Using PDBs is your best option IMHO if the files are on the disk. The file names (represented by ISymbolDocument.URL) are related to sequence points. Sequence points are related to methods (including property get/set), not classes. Of course, a .NET class source can be stored in multiple files. So you'll have to browse all members of a type (using reflection for example) to determine all the corresponding files.