public void Should_call_virtual_method_in_non_virtual_way() { var virtualMethodInfo = typeof(BaseClass).GetMethod("Virt"); var func = CreateFunc <BaseClass, string>(Expr.Return(Expr.CallExact(Expr.Parameter(0, typeof(BaseClass)), virtualMethodInfo))); Assert.That(func(new BaseClass()), Is.EqualTo("base")); Assert.That(func(new DerivedClass()), Is.EqualTo("base")); }