private ResourceSettings GetWorkingSettings(ResourceSettings settings) { if (settings == null) { return(null); } var workingSettings = new ResourceSettings(); workingSettings.BaseUri = settings.BaseUri; workingSettings.SerializerSettings = settings.SerializerSettings; foreach (var route in settings.Routes) { var workingRoute = new Route(); workingSettings.Routes.Add(workingRoute); if (route.Nodes != null) { workingRoute.Nodes = route.Nodes.ToArray(); } if (route.Parameters != null) { workingRoute.Parameters = route.Parameters.ToArray(); } if (route.Templates != null) { workingRoute.Templates = route.Templates.ToArray(); } } return(workingSettings); }
/// <summary> /// Initializes a new instance of the <see cref="Resource{T}" /> class. /// </summary> /// <param name="client">The client.</param> /// <param name="settings">The settings.</param> /// <param name="onError">The on error.</param> /// <param name="expression">The expression.</param> public Resource(INetClient client, ResourceSettings settings, Action <Exception> onError, Expression expression) { Client = client; Settings = settings; Provider = new RestQueryProvider <T>(this); OnError = onError; Expression = expression ?? Expression.Constant(this); }
/// <summary> /// Initializes a new instance of the <see cref="Resource{T}" /> class. /// </summary> public Resource() { if (Settings == null) { Settings = new ResourceSettings(); } Settings.Configure(this); Provider = new RestQueryProvider <T>(this); Expression = Expression.Constant(this); }
/// <summary> /// Initializes a new instance of the <see cref="RestClient" /> class. /// </summary> protected RestClient() { foreach (var property in GetType().GetProperties()) { if (!IsAssignableToGenericType(property.PropertyType, typeof(IQueryable <>))) { continue; } if (property.GetValue(this) != null) { continue; } object element; if (property.PropertyType.IsGenericType) { var concreteType = Type.GetType($"{property.Name}Resource", false); if (concreteType == null) { var settings = new ResourceSettings(); settings.Configure(this, property); var resourceType = typeof(Resource <>).MakeGenericType(property.PropertyType.GenericTypeArguments); element = Activator.CreateInstance(resourceType, this, settings, null, null); } else { element = Activator.CreateInstance(concreteType); } } else { element = Activator.CreateInstance(property.PropertyType); } property.SetValue(this, element); } }
/// <summary> /// Initializes a new instance of the <see cref="Resource{T}" /> class. /// </summary> /// <param name="settings">The settings.</param> public Resource(ResourceSettings settings) { Settings = settings; Provider = new RestQueryProvider <T>(this); Expression = Expression.Constant(this); }