List <IMember> CollectMembers(string code, string typeName, Predicate <IUnresolvedMember> filter1, Predicate <IMember> filter2, bool includeOverloads, bool matchDeclaringType) { var fileName = string.Format("test{0}.csproj", Environment.TickCount); // use a new file name for each test to avoid conflicts var project = new UnknownProject { FileName = fileName }; var solution = new Solution(); solution.RootFolder.AddItem(project); var baseType = GenerateAssembly(project, code).GetTypeDefinition("", typeName, 0); var members = baseType.GetMembers(filter1).Concat(baseType.GetConstructors(filter1)); if (filter2 != null) { members = members.Where(m => filter2(m)); } var result = MemberCollector.CollectMembers(solution, members.First(), ReferenceFinder.RefactoryScope.Solution, includeOverloads, matchDeclaringType).ToList(); TypeSystemService.UnloadProject(project, true); return(result); }
public void TestGetBaseTypes() { string code = @" class A { } class B : A { } interface IA { } class C : A, IA { } interface IB { } class D : B, IA, IB { } "; var project = new UnknownProject(); project.FileName = "test.csproj"; var assembly = GenerateAssembly(project, code); var A = assembly.GetTypeDefinition("", "A", 0); var B = assembly.GetTypeDefinition("", "B", 0); var C = assembly.GetTypeDefinition("", "C", 0); var D = assembly.GetTypeDefinition("", "D", 0); var IA = assembly.GetTypeDefinition("", "IA", 0); var IB = assembly.GetTypeDefinition("", "IB", 0); var result1 = MemberCollector.GetBaseTypes(new [] { A, B, C, D }).ToList(); VerifyResult(result1, new Predicate <ITypeDefinition>[] { t => t == A }); var result2 = MemberCollector.GetBaseTypes(new [] { A, B, C, IA }).ToList(); VerifyResult(result2, new Predicate <ITypeDefinition>[] { t => t == A, t => t == IA }); var result3 = MemberCollector.GetBaseTypes(new [] { A, B, C, D, IA, IB }).ToList(); VerifyResult(result3, new Predicate <ITypeDefinition>[] { t => t == A, t => t == IA, t => t == IB }); TypeSystemService.UnloadProject(project, true); }
internal static IEnumerable <IMember> CollectMembers(Solution solution, IMember member, RefactoryScope scope) { return(MemberCollector.CollectMembers(solution, member, scope)); }
internal static IEnumerable <IMember> CollectMembers(Solution solution, IMember member, RefactoryScope scope, bool includeOverloads = true) { return(MemberCollector.CollectMembers(solution, member, scope, includeOverloads)); }