Ejemplo n.º 1
0
        public static void BuilderResource(object resource, HttpRequestMessage request)
        {
            IEnumerable enumerable = resource as IEnumerable;
            Type        dtoType;

            if (enumerable == null)
            {
                dtoType = resource.GetType();
            }
            else
            {
                dtoType = resource.GetType().GetGenericArguments()[0];
            }
            if (dtoType.BaseType != typeof(RestResource))
            {
                throw new ArgumentException($"Era esperado um RestResource, porém, foi informado um {resource.GetType().FullName}");
            }
            Assembly         currentAssembly = Assembly.GetExecutingAssembly();
            IResourceBuilder resourceBuilder = (IResourceBuilder)Activator.CreateInstance(currentAssembly.GetType($"TreinaWeb.MyApi.Api.HATEOAS.ResourceBuilders.Impl.{dtoType.Name}ResourceBuilder"));

            if (enumerable == null)
            {
                resourceBuilder.BuilderResource(resource, request);
            }
            else
            {
                foreach (var item in enumerable)
                {
                    resourceBuilder.BuilderResource(item, request);
                }
            }
        }