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); }); }
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 ); }