public void RetrieveIntProperty_NoInheritance()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory("InterfaceApplierFactoryTests", ComVisibilityOptions.NotVisible);
            var interfaceApplier        = interfaceApplierFactory.GenerateInterfaceApplier <IAgedInt32ReadOnly>(
                new ActionlessReadValueConverter()
                );
            var src        = new ReadOnlyAgedInt32Class1(29);
            var srcWrapped = interfaceApplier.Apply(src);

            Assert.Equal(29, srcWrapped.Age);
        }
        public void RetrieveStringProperty_PropertyOnInheritedInterface()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory("InterfaceApplierFactoryTests", ComVisibilityOptions.NotVisible);
            var interfaceApplier        = interfaceApplierFactory.GenerateInterfaceApplier <IPerson>(
                new ActionlessReadValueConverter()
                );
            var src        = new ReadOnlyNamedClass1("name");
            var srcWrapped = interfaceApplier.Apply(src);

            Assert.Equal("name", srcWrapped.Name);
        }
        public void WrappingToInaccessibleInterfaceWillFail()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory("InterfaceApplierFactoryTests", ComVisibilityOptions.NotVisible);
            var interfaceApplier        = interfaceApplierFactory.GenerateInterfaceApplier <IPrivateNamedReadOnly>(
                new ActionlessReadValueConverter()
                );
            var src = new ReadOnlyNamedClass1("name");

            Assert.Throws <TypeLoadException>(() =>
            {
                interfaceApplier.Apply(src);
            });
        }
Esempio n. 4
0
        private static void DemonstrateReflectionInterfaceApplication()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory(
                "DynamicAssembly",
                ComVisibilityOptions.Visible
                );

            var employeeInterfaceApplier = interfaceApplierFactory.GenerateInterfaceApplier <IEmployee>(
                new CachedReadValueConverter(interfaceApplierFactory)
                );
            var employee = employeeInterfaceApplier.Apply(
                new Employee("Jim", new Employee.EmployeeRole("Test Pilot"))
                );
        }
        public void RetrieveInt16ValueAsInt32PropertyWillFail()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory("InterfaceApplierFactoryTests", ComVisibilityOptions.NotVisible);
            var interfaceApplier        = interfaceApplierFactory.GenerateInterfaceApplier <IAgedInt32ReadOnly>(
                new ActionlessReadValueConverter()
                );
            var src        = new ReadOnlyAgedInt16Class1(29);
            var srcWrapped = interfaceApplier.Apply(src);

            Assert.Throws <InvalidCastException>(() =>
            {
                Console.WriteLine(srcWrapped.Age);
            });
        }
        public void RetrieveStringPropertyWhenWrappedObjectDoesNotHavePropertyWillFail()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory("InterfaceApplierFactoryTests", ComVisibilityOptions.NotVisible);
            var interfaceApplier        = interfaceApplierFactory.GenerateInterfaceApplier <INamedReadOnly>(
                new ActionlessReadValueConverter()
                );
            var src        = new object();
            var srcWrapped = interfaceApplier.Apply(src);

            Assert.Throws <MissingMethodException>(() =>
            {
                Console.WriteLine(srcWrapped.Name);
            });
        }
        public void RecursiveInterfacesDoNoCauseStackOverflow()
        {
            var interfaceApplierFactory = new ReflectionInterfaceApplierFactory(
                "DynamicAssembly",
                ComVisibilityOptions.Visible
                );

            var n1 = new Node()
            {
                Name = "Node1"
            };
            var n2 = new Node()
            {
                Name = "Node2"
            };
            var n3 = new Node()
            {
                Name = "Node3"
            };

            n1.Hierarchy = new Node.HierarchyData()
            {
                Self = n1, Next = n2
            };

            n2.Hierarchy = new Node.HierarchyData()
            {
                Previous = n1,
                Self     = n2,
                Next     = n3
            };

            n3.Hierarchy = new Node.HierarchyData()
            {
                Previous = n2, Self = n3
            };

            var interfaceApplier = interfaceApplierFactory.GenerateInterfaceApplier <INode>(
                new CachedReadValueConverter(interfaceApplierFactory)
                );
            var n2Wrapped = interfaceApplier.Apply(n2);

            // Navigating right around the hierarchy chain here to try to ensure that if an overflow is possible that it would occur here
            Assert.Equal(
                "Node2",
                n2Wrapped.Hierarchy.Previous.Hierarchy.Next.Hierarchy.Next.Hierarchy.Previous.Name
                );
        }