コード例 #1
0
        /// <summary>
        /// determines the specified type from a string
        /// </summary>
        /// <param name="provider">provider for script named types</param>
        /// <param name="token">token from which type should be determined</param>
        /// <param name="typename">name of type</param>
        /// <returns>Type determined from string</returns>
        public static Type DetermineType(this ITypeProvider provider, IScriptToken token, string typename)
        {
            ITypeInstanceProvider instanceprovider = provider.GetType(typename);

            if (instanceprovider != null)
            {
                Type type = instanceprovider.ProvidedType;
                if (type == null)
                {
                    throw new ScriptRuntimeException($"type '{typename}' does not provide type information", token);
                }

                return(type);
            }
            else
            {
                // try to load type dynamically
                Type type = Type.GetType(typename);
                if (type == null)
                {
                    throw new ScriptRuntimeException($"Unknown type '{typename}'", token);
                }

                return(type);
            }
        }
コード例 #2
0
 internal NewInstance(string typename, Type type, ITypeInstanceProvider provider, IScriptToken[] parameters)
 {
     TypeName        = typename;
     Type            = type;
     this.provider   = provider;
     this.parameters = parameters;
 }
コード例 #3
0
 /// <inheritdoc />
 public void AddType(string name, ITypeInstanceProvider provider)
 {
     types[name] = provider;
 }