public void Invalid_Untyped_Expression_Returns_False()
        {
            var actual = ExpressionExt.TryGetPropertyInfo <TestClass>(c => "string", out var member);

            Assert.IsFalse(actual);
            Assert.IsNull(member);
        }
        public void Valid_Untyped_Property_Expressions_Returns_Null()
        {
            var actual = ExpressionExt.TryGetPropertyInfo <TestClass>(c => c.Property, out var member);

            Assert.IsTrue(actual);
            Assert.AreEqual(TestClass.PropertyInfo, member);
        }
        public void Method_Expression_Returns_Null()
        {
            var actual = ExpressionExt.TryGetPropertyInfo <TestClass>(c => c.Method(), out var member);

            Assert.IsFalse(actual);
            Assert.IsNull(member);
        }
        public void Valid_Untyped_Unary_Field_Expressions_Returns_Null()
        {
            var actual = ExpressionExt.TryGetPropertyInfo <TestClass>(c => (string)c.Field, out var member);

            Assert.IsFalse(actual);
            Assert.IsNull(member);
        }
        public void Valid_Typed_Property_Expression_Returns_Expected_Values()
        {
            var actual = ExpressionExt.TryGetPropertyInfo <TestClass, string>(c => c.Property, out var member);

            Assert.IsTrue(actual);
            Assert.AreEqual(TestClass.PropertyInfo, member);
        }