public void GetPropertyNamesShouldReturnNameOfProperties()
        {
            var actualPropertyNames = CompiledReflection.GetPropertyNames <TestClass1>();

            var bindingFlags          = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
            var expectedPropertyNames = typeof(TestClass1).GetProperties(bindingFlags).Select(p => p.Name);

            Assert.Equal(expectedPropertyNames, actualPropertyNames);
        }
Example #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Types in this assembly:");
            foreach (Type t in typeof(Program).Assembly.GetTypes())
            {
                Console.WriteLine(t.FullName);
            }

            var ps = CompiledReflection.GetPropertyNames <Program>();

            foreach (var p in ps)
            {
                Console.WriteLine(p);
            }

            ps = CompiledReflection.GetPropertyNames <TestClass>();

            foreach (var p in ps)
            {
                Console.WriteLine(p);
            }

            var pis = CompiledReflection.GetPropertyInfo <TestClass>().ToList();

            var tc = new TestClass {
                MyProperty = 42, MyProperty2 = "23", MyProperty2b = "48"
            };

            foreach (var pi in pis)
            {
                Console.WriteLine($"{pi.TypeName} {pi.Name} {pi.GetValue(tc)}");
            }

            Console.WriteLine(pis[0].TrySetValue(tc, 142));
            Console.WriteLine(pis[1].TrySetValue(tc, "123"));
            Console.WriteLine(pis[2].TrySetValue(tc, "148"));
            Console.WriteLine(pis[3].TrySetValue(tc, new TestClass()));

            foreach (var pi in pis.Where(i => i.SetAccessibility != Accessibility.Private))
            {
                Console.WriteLine($"{pi.TypeName} {pi.Name} {pi.GetValue(tc)}");
            }
        }