public void Set_Delay_Should_Ok()
        {
            var fooVo = new FooVo();

            fooVo.Id   = "001";
            fooVo.Name = "fooVo";
            fooVo.Set("check1", () =>
            {
                fooVo.Name += "+check1";
                return("foo");
            });
            fooVo.Set("check2", () =>
            {
                fooVo.Name += "+check2";
                return("foo");
            });

            fooVo.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateExcludeFilter("check1"));
            var jsonFilter = fooVo.GetJson(true);

            jsonFilter.Contains("+check1", StringComparison.OrdinalIgnoreCase).ShouldFalse();
            jsonFilter.Contains("+check2", StringComparison.OrdinalIgnoreCase).ShouldTrue();

            fooVo.Name.ShouldEqual("fooVo+check2");
        }
Example #2
0
 public IExpandoPropertyFilter GetPropertyFilter()
 {
     if (_propertyFilters.Filters.Count == 0)
     {
         return(ExpandoPropertyFilterFactory.Resolve());
     }
     return(_propertyFilters);
 }
Example #3
0
        public string GetVo4()
        {
            var expando = new ExpandoModel();

            expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateExcludeFilter("bad"));
            expando.Set("A", () => Task.FromResult("abc"));
            expando.Set("B", async() => await Task.FromResult("abc"));
            expando.Set("bad", () => Task.FromResult("bad"));
            return(JsonConvert.SerializeObject(expando, Formatting.Indented));
        }
Example #4
0
        public string GetVo()
        {
            var fooVo = new FooVo();

            fooVo.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateExcludeFilter("bad"));
            fooVo["a"]    = "111";
            fooVo["bad"]  = "bad";
            fooVo["good"] = "good";
            return(JsonConvert.SerializeObject(fooVo, Formatting.Indented));
        }
Example #5
0
 /// <summary>
 /// 使用ExpandoSelect过滤expando属性
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="expando"></param>
 /// <param name="expandoSelect"></param>
 /// <returns></returns>
 public static T ApplyExpandoSelect <T>(this T expando, ExpandoSelect expandoSelect) where T : ExpandoModel
 {
     if (expandoSelect.Includes.Count > 0)
     {
         expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateIncludeFilter(expandoSelect.Includes.ToArray()));
     }
     if (expandoSelect.Excludes.Count > 0)
     {
         expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateIncludeFilter(expandoSelect.Excludes.ToArray()));
     }
     return(expando);
 }
Example #6
0
        public string GetVo3()
        {
            var expando = new ExpandoModel();

            expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateExcludeFilter("bad"));

            dynamic dynamicVo = expando;

            dynamicVo.a    = "222";
            dynamicVo.bad  = "bad";
            dynamicVo.good = "good";
            return(JsonConvert.SerializeObject(expando, Formatting.Indented));
        }
        public void Set_Lazy_Should_Ok()
        {
            var fooVo = new FooVo();

            fooVo.Id   = "001";
            fooVo.Name = "fooVo";
            fooVo.Set("check1", new Lazy <string>(() => "check1Invoked"));
            fooVo.Set("check2", new Lazy <string>(() => "check2Invoked"));

            fooVo.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateExcludeFilter("check1"));
            var jsonFilter = fooVo.GetJson(true);

            jsonFilter.Contains("check1Invoked", StringComparison.OrdinalIgnoreCase).ShouldFalse();
            jsonFilter.Contains("check2Invoked", StringComparison.OrdinalIgnoreCase).ShouldTrue();
        }
Example #8
0
 /// <summary>
 /// 使用ExpandoSelect过滤expando属性
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="expandos"></param>
 /// <param name="expandoSelect"></param>
 /// <returns></returns>
 public static IEnumerable <T> ApplyExpandoSelect <T>(this IEnumerable <T> expandos, ExpandoSelect expandoSelect) where T : ExpandoModel
 {
     foreach (var expando in expandos)
     {
         if (expandoSelect.Includes.Count > 0)
         {
             expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateIncludeFilter(expandoSelect.Includes.ToArray()));
         }
         if (expandoSelect.Excludes.Count > 0)
         {
             expando.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateIncludeFilter(expandoSelect.Excludes.ToArray()));
         }
         yield return(expando);
     }
 }
        public void AsExpandoModel_Should_Ok()
        {
            var fooEntity = new FooEntity();

            fooEntity.Id   = "entity id";
            fooEntity.Name = "entity name";
            fooEntity.Desc = "entity desc";

            var excludeFilter = ExpandoPropertyFilterFactory.CreateExcludeFilter("Desc");
            var fooExpando    = fooEntity.AsExpandoModel(excludeFilter);

            var json = JsonConvert.SerializeObject(fooExpando, Formatting.Indented).Log();

            json.Contains("entity id", StringComparison.OrdinalIgnoreCase).ShouldTrue();
            json.Contains("entity name", StringComparison.OrdinalIgnoreCase).ShouldTrue();
            json.Contains("entity desc", StringComparison.OrdinalIgnoreCase).ShouldFalse();
        }
        public void ExcludeFilter_Should_Ok()
        {
            var propertyFilter = ExpandoPropertyFilterFactory.CreateExcludeFilter("c", "d");

            propertyFilter.IncludeDynamicProperty("A").ShouldTrue();
            propertyFilter.IncludeDynamicProperty("b").ShouldTrue();
            propertyFilter.IncludeDynamicProperty("C").ShouldFalse();
            propertyFilter.IncludeDynamicProperty("c").ShouldFalse();

            var propertyFilter2 = ExpandoPropertyFilterFactory.CreateExcludeFilter("*");

            propertyFilter2.IncludeDynamicProperty("C").ShouldFalse();

            var propertyFilter3 = ExpandoPropertyFilterFactory.CreateExcludeFilter();

            propertyFilter3.IncludeDynamicProperty("C").ShouldTrue();
        }
        public void CompositeFilter_Should_Ok()
        {
            var includeFilter  = ExpandoPropertyFilterFactory.CreateIncludeFilter("a", "b");
            var includeFilter2 = ExpandoPropertyFilterFactory.CreateIncludeFilter("d");
            var propertyFilter = ExpandoPropertyFilterFactory.CreateCompositeFilter(includeFilter, includeFilter2);

            propertyFilter.IncludeDynamicProperty("A").ShouldTrue();
            propertyFilter.IncludeDynamicProperty("b").ShouldTrue();
            propertyFilter.IncludeDynamicProperty("C").ShouldFalse();
            propertyFilter.IncludeDynamicProperty("D").ShouldTrue();

            var includeFilter3 = ExpandoPropertyFilterFactory.CreateIncludeFilter("*");

            propertyFilter.AddPropertyFilter(includeFilter3);
            propertyFilter.IncludeDynamicProperty("D").ShouldTrue();

            var excludeFilter = ExpandoPropertyFilterFactory.CreateExcludeFilter("d");

            propertyFilter.AddPropertyFilter(excludeFilter);
            propertyFilter.IncludeDynamicProperty("D").ShouldFalse();

            var excludeFilter2 = ExpandoPropertyFilterFactory.CreateExcludeFilter("e");

            propertyFilter.AddPropertyFilter(excludeFilter2);
            propertyFilter.IncludeDynamicProperty("e").ShouldFalse();

            var excludeFilter3 = ExpandoPropertyFilterFactory.CreateExcludeFilter("a");

            propertyFilter.AddPropertyFilter(excludeFilter3);
            propertyFilter.IncludeDynamicProperty("a").ShouldFalse();

            propertyFilter.IncludeDynamicProperty("b").ShouldTrue();
            propertyFilter.IncludeDynamicProperty("x").ShouldTrue();
            var excludeFilter4 = ExpandoPropertyFilterFactory.CreateExcludeFilter("*");

            propertyFilter.AddPropertyFilter(excludeFilter4);
            propertyFilter.IncludeDynamicProperty("b").ShouldFalse();
            propertyFilter.IncludeDynamicProperty("x").ShouldFalse();
        }
Example #12
0
 public static T IncludeNone <T>(this T expandoModel) where T : ExpandoModel
 {
     expandoModel._propertyFilters.Filters.Clear();
     expandoModel.AddPropertyFilter(ExpandoPropertyFilterFactory.CreateIncludeFilter());
     return(expandoModel);
 }