コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 internal static IEnumerable <IMember> CollectMembers(Solution solution, IMember member, RefactoryScope scope)
 {
     return(MemberCollector.CollectMembers(solution, member, scope));
 }
コード例 #4
0
 internal static IEnumerable <IMember> CollectMembers(Solution solution, IMember member, RefactoryScope scope, bool includeOverloads = true)
 {
     return(MemberCollector.CollectMembers(solution, member, scope, includeOverloads));
 }