public void ReferenceTypeFilterSetDefaultValue_Lazy() { var filter = new ReferenceTypeFilter <TestSource, string>(); filter.For(x => x.Name); filter.Conditions(condition => { condition["equal"] = new ReferenceTypeEqualCondition <string>(); condition["notequal"] = new ReferenceTypeNotEqualCondition <string>(); }); var expr1 = filter.BuildExpression <TestSource>(); Assert.IsNull(expr1); filter.SetDefaultValue(() => new FilterValue <string> { LeftValue = "10", ConditionKey = "equal" }); var expr2 = filter.BuildExpression <TestSource>(); Assert.IsNotNull(expr2); Assert.IsTrue(expr2.Compile()(new TestSource { Name = "10" })); Assert.IsFalse(expr2.Compile()(new TestSource { Name = "12" })); filter.Init(new FilterValue <string> { ConditionKey = "notequal", LeftValue = "10" }); var expr3 = filter.BuildExpression <TestSource>(); Assert.IsNotNull(expr3); Assert.IsTrue(expr3.Compile()(new TestSource { Name = "12" })); Assert.IsFalse(expr3.Compile()(new TestSource { Name = "10" })); }