コード例 #1
0
 public virtual void ConfigureEntityToViewModelMapper(IMapperConfigurationExpression configurationExpression)
 {
     EntityToViewModelExpression = configurationExpression.CreateMap <TEntity, TViewModel>();
     EntityToViewModelExpression.PreserveReferences();
 }
コード例 #2
0
        public static IMappingExpression <TModel, TServiceModel> ApplyDefaultModelMappingOptions <TModel, TServiceModel>(this IMappingExpression <TModel, TServiceModel> mappingExpression)
            where TServiceModel : ServiceModelBase
            where TModel : ModelBase
        {
            var serviceModelProperties = typeof(TServiceModel).GetProperties();
            var modelProperties        = typeof(TModel).GetProperties();

            foreach (var propertyInfo in modelProperties)
            {
                if (typeof(ModelBase).IsAssignableFrom(propertyInfo.PropertyType))
                {
                    var serviceModelPropertyInfo = serviceModelProperties.FirstOrDefault(x => Equals(x.Name, propertyInfo.Name));

                    if (serviceModelPropertyInfo != null && typeof(ServiceModelBase).IsAssignableFrom(serviceModelPropertyInfo.PropertyType))
                    {
                        mappingExpression.ForMember(
                            propertyInfo.Name,
                            options =>
                        {
                            options.ResolveUsing((model, serviceModel, serviceModelMember, resolutionContext) =>
                            {
                                if (IsPropertyIncluded <TServiceModel>(resolutionContext, propertyInfo.Name))
                                {
                                    var item = propertyInfo.GetValue(model);
                                    if (item is ModelBase modelBase)
                                    {
                                        if (modelBase.IsObsolete)
                                        {
                                            return(null);
                                        }
                                    }
                                    return(propertyInfo.GetValue(model));
                                }
                                return(null);
                            });
                        });
                    }
                }

                if (typeof(IEnumerable <ModelBase>).IsAssignableFrom(propertyInfo.PropertyType))
                {
                    var serviceModelPropertyInfo = serviceModelProperties.FirstOrDefault(x => Equals(x.Name, propertyInfo.Name));

                    if (serviceModelPropertyInfo != null && typeof(IEnumerable <ServiceModelBase>).IsAssignableFrom(serviceModelPropertyInfo.PropertyType))
                    {
                        mappingExpression.ForMember(
                            propertyInfo.Name,
                            options =>
                        {
                            options.ResolveUsing((model, serviceModel, serviceModelMember, resolutionContext) =>
                            {
                                if (IsPropertyIncluded <TServiceModel>(resolutionContext, propertyInfo.Name))
                                {
                                    var items = propertyInfo.GetValue(model);
                                    if (items is IEnumerable <ModelBase> )
                                    {
                                        items = ((IEnumerable <ModelBase>)items).Where(x => !x.IsObsolete);
                                    }
                                    return(items);
                                }
                                return(null);
                            });
                        });
                    }
                }
            }

            return(mappingExpression.PreserveReferences());
        }
コード例 #3
0
 private static void Configure(TypeMap x, IMappingExpression expression)
 => expression.PreserveReferences();