void ExcludeByTypeImplementation <TTarget>(params Type[] types)
        {
            PreConditionToAdd <TTarget>(Strategy.Excluder);
            var helper = new HarvestHelper();

            // we evaluate outside of the usage in the lambda to prevent multiple calls to GetFieldsAndProperties()
            var cachedList = new List <string>();

            foreach (var type in types)
            {
                cachedList.AddRange(helper.GetFieldsAndProperties(type).Select(x => x.SanitizedName));
            }
            excluders.Add(new Implementation(typeof(TTarget), x => x.Where(y => !cachedList.Contains(y.SanitizedName))));
        }
        void IncludeByTypeImplementation <TTarget>(params Type[] types)
        {
            PreConditionToAdd <TTarget>(Strategy.Includer);
            var helper = new HarvestHelper();

            // we evaluate outside of the usage in the lambda to prevent multiple calls to GetFieldsAndProperties()
            var cachedList = new List <SanitizedFieldInfo>();

            foreach (var type in types)
            {
                cachedList.AddRange(helper.GetFieldsAndProperties(type));
            }
            includers.Add(new Implementation(typeof(TTarget), x => cachedList));
        }
Exemple #3
0
 /// <summary>
 ///   We ignore all properties as they, in the end, will only point to some computed state or other fields.
 ///   Hence they do not provide information about the actual state of the object.
 /// </summary>
 public List <SanitizedFieldInfo> GetFields(Type type)
 {
     return(harvestHelper.GetFieldsAndProperties(type));
 }