예제 #1
0
        public IActionResult Load(FWDataOptionsViewModel bindModel)
        {
            var options = _memoryCache.Get <FWListOptions>(bindModel.CId);

            if (options == null)
            {
                return(StatusCode(500, "bad model"));
            }

            var filter = FWMapperHelper.Transform(options.FilterType, bindModel);

            FWModelHelper.BindFilterFromQueryString(filter, HttpContext.Request.Query);

            HttpContext.SetView(options.ViewPath);

            var service = _serviceProvider.GetService(options.ServiceType);
            var model   = options.ServiceMethod.Invoke(service, new object[] { filter }) as IEnumerable;

            // Gets the metadata from the return type of the service method.
            var metadata = _requestContext.MetadataProvider.GetMetadataForType(options.ServiceMethod.ReturnParameter.ParameterType);
            var control  = new FWListControl(_requestContext, metadata, model);

            foreach (var config in options.FluentConfiguration)
            {
                config.Invoke(control);
            }

            return(Content(control.ToString()));
        }
예제 #2
0
 protected override void OnCollectionMapped(object source, object target)
 {
     if (source is IFWList list)
     {
         var targetList            = target as IList;
         var targetListGenericType = targetList.GetType().GetGenericArguments().First();
         if (_entity.IsAssignableFrom(targetListGenericType))
         {
             foreach (var removed in list.RemovedItems)
             {
                 var removedEntity = FWMapperHelper.Transform(targetListGenericType, removed);
                 (removedEntity as FWEntity).Remove();
                 targetList.Add(removedEntity);
             }
         }
     }
 }
예제 #3
0
        public void MapWithCustomMap()
        {
            var c1 = new CustomMap1()
            {
                InnerString = "Hello"
            };
            var c2 = c1.Map <CustomMap2>();

            Assert.Equal("Hello", c2.InnerString);
            Assert.Equal(2, c2.CustomMap);

            var c3 = c1.Map <CustomMap2, CustomMapper>();

            Assert.Null(c3.InnerString);

            FWMapperHelper.AddMap <CustomMap1, CustomMap2, CustomMapper>();
            var c4 = c1.Map <CustomMap2>();

            Assert.Null(c4.InnerString);
        }
예제 #4
0
 static FWSecureInt()
 {
     FWMapperHelper.AddMap <FWSecureInt, int, FWSecureIntInjection>();
     FWMapperHelper.AddMap <int, FWSecureInt, FWSecureIntInjection>();
 }
예제 #5
0
 protected override object InjectFrom(Type targetType, object source)
 {
     return(FWMapperHelper.Transform <FWEntityInjection>(targetType, source));
 }
예제 #6
0
 static FWSecureLong()
 {
     FWMapperHelper.AddMap <FWSecureLong, long, FWSecureLongInjection>();
     FWMapperHelper.AddMap <long, FWSecureLong, FWSecureLongInjection>();
 }
예제 #7
0
 /// <summary>
 /// Maps a source object to a target type.
 /// </summary>
 /// <param name="targetType">The target type.</param>
 /// <param name="source">The source object.</param>
 /// <returns>The mapped object.</returns>
 protected virtual object InjectFrom(Type targetType, object source)
 {
     return(FWMapperHelper.Transform <FWInjection>(targetType, source));
 }