コード例 #1
0
        public static DirectoryTypeScanner CreateDefaultDirectoryTypeScanner()
        {
            var tempDirectoryPath =
                Path.Combine(Path.GetTempPath(),
                             Path.GetFileNameWithoutExtension(Path.GetRandomFileName()));

            var directory =
                Directory.CreateDirectory(tempDirectoryPath);

            for (var i = 0; i < 2; i++)
            {
                var assemblyName =
                    Path.Combine(directory.FullName,
                                 string.Concat(Path.GetFileNameWithoutExtension(Path.GetRandomFileName()), ".dll"));

                var results =
                    CSharpAssemblyFactory.Compile(
                        @"
                        public class Foo { }
                        class Bar { }
                        public interface IFoo { }
                        interface IBar { }
                        public abstract class Baz { }
                    ", assemblyName);
            }

            return(new DirectoryTypeScanner(tempDirectoryPath));
        }
コード例 #2
0
ファイル: AssemblyFactory.cs プロジェクト: zqb971/MefContrib
        public AssemblyWrapper Build(string code)
        {
            var builtAssembly =
                CSharpAssemblyFactory.Compile(code, this.GenerateTemporaryAssemblyName());

            this.Assemblies.Add(new AssemblyWrapper(builtAssembly));

            return(this.Assemblies.Last());
        }
コード例 #3
0
        public void Compile_should_return_instance_of_assembly()
        {
            var results =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo
                        {
                        }
                    ");

            Assert.NotNull(results);
        }
コード例 #4
0
        public void Compile_should_return_assembly_with_one_public_type()
        {
            var results =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo
                        {
                        }
                    ");

            Assert.AreEqual(1, results.GetExportedTypes().Length);
        }
コード例 #5
0
        public void Ctor_should_store_assembly_reference_in_assembly_property()
        {
            var assembly =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo
                        {
                        }
                    ");

            var scanner =
                new AssemblyTypeScanner(assembly);

            scanner.Assembly.ShouldBeSameAs(assembly);
        }
コード例 #6
0
        public void GetTypes_should_only_return_class_types()
        {
            var assembly =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo { }
                        public struct Bar { }
                    ");

            var scanner =
                new AssemblyTypeScanner(assembly);

            var types =
                scanner.GetTypes(x => true);

            types.Count().ShouldEqual(1);
        }
コード例 #7
0
        public void GetTypes_should_return_all_types_in_assembly_that_matches_predicate()
        {
            var assembly =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo { }
                        public class Bar { }
                    ");

            var scanner =
                new AssemblyTypeScanner(assembly);

            var types =
                scanner.GetTypes(x => x.Name.Equals("Bar"));

            types.Count().ShouldEqual(1);
        }
コード例 #8
0
        public void AddTypes_should_extract_types_from_function()
        {
            var assembly =
                CSharpAssemblyFactory.Compile(
                    @"
                        public class Foo { }
                        public class Bar { }
                    ");

            var scanner =
                CreateDefaultTypeScanner();

            scanner.AddTypes(() => assembly.GetExportedTypes().ToList());

            var types =
                scanner.GetTypes(t => true);

            types.Count().ShouldEqual(2);
        }