I would consider using NRefactory library or similar. The idea of NRefactory is similar to Roslyn so should solve you problem. If I understand you correctly you need information about classes and their members before compilation. The simplest code based on NRefactory, responsible for retrieving list of classes together with information about methods and properties, could look in the following way:
var parser = new CSharpParser();
var syntaxTree = parser.Parse(code);
var classes = syntaxTree.Descendants.OfType<TypeDeclaration>().Where(x => x.ClassType == ClassType.Class);
foreach (var typeDeclaration in classes)
{
var result = typeDeclaration.Descendants.Where(d => d is MethodDeclaration || d is PropertyDeclaration);
foreach (var declaration in result )
{
//...
}
}
This example performs only syntax analysis of the source code. However, you can also perform semantic analysis with NRefactory by using CSharpAstResolver class.