Exemple #1
0
        public static void Register(string name, Type type, ICustomDeserializer loader = null)
        {
            EnsureConfig();

            // Default loader if none specified
            if (loader == null)
            {
                loader = new DefaultLoader();
            }

            lock (types)
            {
                if (!types.ContainsKey(name))
                {
                    types.Add(name, type);
                }
            }

            lock (names)
            {
                if (!names.ContainsKey(type))
                {
                    names.Add(type, name);
                }
            }

            lock (builders)
            {
                if (!builders.ContainsKey(type))
                {
                    builders.Add(type, loader);
                }
            }
        }
        /// <summary>
        /// Register a declarative type with the resource loader system.
        /// </summary>
        /// <param name="kind">the $kind name to map to this type.</param>
        /// <param name="type">type of object to create.</param>
        /// <param name="loader">optional custom deserializer.</param>
        /// <returns>Resource explorer for fluent style multiple calls.</returns>
        public ResourceExplorer RegisterType(string kind, Type type, ICustomDeserializer loader = null)
        {
            // Default loader if none specified
            if (loader == null)
            {
                loader = new DefaultLoader();
            }

            lock (kinds)
            {
                kinds[kind] = type;
            }

            lock (names)
            {
                names[type] = kind;
            }

            lock (builders)
            {
                builders[type] = loader;
            }

            return(this);
        }
Exemple #3
0
        public static void Register(string name, Type type, ICustomDeserializer loader = null)
        {
            EnsureConfig();

            // Default loader if none specified
            if (loader == null)
            {
                loader = new DefaultLoader();
            }

            lock (types)
            {
                types[name] = type;
            }

            lock (names)
            {
                names[type] = name;
            }

            lock (builders)
            {
                builders[type] = loader;
            }
        }
        public async Task Load()
        {
            // Load assembly for factory registration and custom loader if applicable
            var assembly = Assembly.LoadFrom(info.AssemblyPath);

            this.Type      = assembly.GetTypes().FirstOrDefault(t => t.Name == info.ClassName);
            this.SchemaUri = info.SchemaUri;

            if (!string.IsNullOrEmpty(info.CustomLoaderClassName))
            {
                this.Loader = Activator.CreateInstance(assembly.GetType(info.CustomLoaderClassName)) as ICustomDeserializer;
            }

            await Task.FromResult <object>(null);

            return;
        }
Exemple #5
0
        private void RegisterTypeInternal(string kind, Type type, ICustomDeserializer loader = null)
        {
            // Default loader if none specified
            if (loader == null)
            {
                loader = new DefaultLoader();
            }

            kindToType[kind] = type;

            if (!typeToKinds.TryGetValue(type, out List <string> kinds))
            {
                kinds = new List <string>();
            }

            kinds.Add(kind);
            typeToKinds[type]       = kinds;
            kindDeserializers[kind] = loader;
        }
Exemple #6
0
 /// <summary>
 /// Register a declarative type with the resource loader system.
 /// </summary>
 /// <param name="kind">the $kind name to map to this type.</param>
 /// <param name="type">type of object to create.</param>
 /// <param name="loader">optional custom deserializer.</param>
 /// <returns>Resource explorer for fluent style multiple calls.</returns>
 public ResourceExplorer RegisterType(string kind, Type type, ICustomDeserializer loader = null)
 {
     RegisterComponentTypes();
     RegisterTypeInternal(kind, type, loader);
     return(this);
 }
Exemple #7
0
 /// <summary>
 /// Register a declarative type with the resource loader system.
 /// </summary>
 /// <typeparam name="T">type of object to create.</typeparam>
 /// <param name="kind">the $kind name to map to this type.</param>
 /// <param name="loader">optional custom deserializer.</param>
 /// <returns>Resource explorer for fluent style multiple calls.</returns>
 public ResourceExplorer RegisterType <T>(string kind, ICustomDeserializer loader = null)
 {
     return(RegisterType(kind, typeof(T), loader));
 }
 public SceneDeserializer WithCustomDeserializer(ICustomDeserializer deserializer)
 {
     deserializers.Add(deserializer);
     return(this);
 }
        internal Excepted SendRequest <Excepted>(string url, MethodsType method    = MethodsType.GET,
                                                 Dictionary <string, string> query = null, object objectToSend = null, ICustomDeserializer <Excepted> customDeserializer = null)
        {
            SendRequestAndGetResponse(method, url, query, objectToSend);

            if (customDeserializer == null)
            {
                return(TryGetResponse <Excepted>(client));
            }
            else
            {
                return(TryGetResponseWithCustomDeserializer <Excepted>(client, customDeserializer));
            }
        }
        Expected TryGetResponseWithCustomDeserializer <Expected>(RestClient rc, ICustomDeserializer <Expected> customDeserializer)
        {
            string response = rc.GetResponseToString;

            return(customDeserializer.Deserialize(response));
        }