コード例 #1
0
        /// <inheritdoc />
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException | AppDom.LoadFlags.LoadAssemblies;
            var type  = AppDom.FindType("Npgsql.NpgsqlConnection", "Npgsql", flags);

            return((IDbConnection)Activator.CreateInstance(type));
        }
コード例 #2
0
ファイル: AudioAPI.cs プロジェクト: CaveSystems/cave-media
        /// <summary>
        /// Gets all available <see cref="AudioAPI"/> instances.
        /// </summary>
        /// <returns></returns>
        public static IAudioDecoder[] GetAvailableAudioDecoders()
        {
            var decoder = AppDom.GetTypes <IAudioDecoder>();

            decoder.Sort();
            return(decoder.ToArray());
        }
コード例 #3
0
ファイル: MsSqlStorage.cs プロジェクト: CaveSystems/cave-data
        /// <inheritdoc/>
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException | (AllowAssemblyLoad ? AppDom.LoadFlags.LoadAssemblies : 0);
            var type  = AppDom.FindType("System.Data.SqlClient.SqlConnection", "System.Data.SqlClient", flags);

            return((IDbConnection)Activator.CreateInstance(type));
        }
コード例 #4
0
ファイル: AudioAPI.cs プロジェクト: CaveSystems/cave-media
        /// <summary>
        /// Gets all available <see cref="AudioAPI"/> instances.
        /// </summary>
        /// <returns></returns>
        public static IAudioAPI[] GetAvailableAudioAPIs()
        {
            var apis = AppDom.GetTypes <IAudioAPI>();

            apis.Sort();
            return(apis.ToArray());
        }
コード例 #5
0
        /// <summary>
        /// Obtains all available <see cref="AudioAPI"/> instances.
        /// </summary>
        /// <returns></returns>
        public static IAudioEncoder[] GetAvailableAudioEncoders()
        {
            List <IAudioEncoder> encoder = AppDom.GetTypes <IAudioEncoder>();

            encoder.Sort();
            return(encoder.ToArray());
        }
コード例 #6
0
        /// <inheritdoc />
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException | AppDom.LoadFlags.LoadAssemblies;
            var type  =
                AppDom.FindType("System.Data.SQLite.SQLiteConnection", "System.Data.SQLite", flags) ??
                AppDom.FindType("Mono.Data.SQLite.SQLiteConnection", "Mono.Data.SQLite", flags) ??
                throw new TypeLoadException("Could neither load System.Data.SQLite.SQLiteConnection nor Mono.Data.SQLite.SQLiteConnection!");

            return((IDbConnection)Activator.CreateInstance(type));
        }
コード例 #7
0
        /// <inheritdoc />
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException | AppDom.LoadFlags.LoadAssemblies;
            var type  =
                AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySql.Data", flags) ??
                AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySqlConnector", flags) ??
                AppDom.FindType("MySqlConnector.MySqlConnection", "MySqlConnector", flags) ??
                throw new TypeLoadException("Could not load type MySql.Data.MySqlClient.MySqlConnection!");

            return((IDbConnection)Activator.CreateInstance(type));
        }
コード例 #8
0
        Type LoadType(string typeName, AppDom.LoadMode mode = AppDom.LoadMode.None)
        {
            // typeload fix (old version)
            if (typeName.StartsWith("Cave.Web.Auth."))
            {
                typeName = typeName.Replace("Cave.Web.Auth.", "Cave.Auth.");
            }
            if (typeName.StartsWith("Cave.Web.e"))
            {
                typeName = typeName.Replace("Cave.Web.e", "Cave.Web.");
            }

            return(AppDom.FindType(typeName, mode));
        }
コード例 #9
0
        void Paragraph(string className, Bootstrap4 content, string data, string textType = null)
        {
            if (data == null)
            {
                return;
            }

            if (textType != null)
            {
                className = ($"{className} " + textType == null ? string.Empty : "text-" + textType).Trim();
            }

            foreach (XNode n in XElement.Parse($"<data>{data}</data>").Nodes())
            {
                string s = n.ToString();
                if (s.StartsWith("<see"))
                {
                    s = s.GetString(-1, ":", "/>").TrimEnd(' ', '"');
                    bool done = false;
                    try
                    {
                        Type t = AppDom.FindType(s, AppDom.LoadMode.NoException);
                        if (t != null && t.IsValueType && !t.IsEnum && !t.IsPrimitive)
                        {
                            var layout = RowLayout.CreateTyped(t);
                            content.Link($"Table {layout.Name}", "/Explain?type=" + s, textType == null ? null : "btn btn-sm btn-outline-" + textType);
                            done = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.TraceError("Error explaining type {0}. {1} Falling back to simple description.", s, ex);
                    }
                    if (!done)
                    {
                        content.Link(s.AfterLast('.'), "/Explain?type=" + s, textType == null ? null : "btn btn-sm btn-outline-" + textType);
                    }
                    continue;
                }
                content.AddHtml(s);
            }
        }
コード例 #10
0
        /// <inheritdoc/>
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException;
            var type  =
                AppDom.FindType("System.Data.SQLite.SQLiteConnection", "System.Data.SQLite", flags) ??
                AppDom.FindType("Mono.Data.SQLite.SQLiteConnection", "Mono.Data.SQLite", flags);

            if ((type == null) && AllowAssemblyLoad)
            {
                //try with unsafe load
                flags |= AppDom.LoadFlags.LoadAssemblies;
                type   =
                    AppDom.FindType("System.Data.SQLite.SQLiteConnection", "System.Data.SQLite", flags) ??
                    AppDom.FindType("Mono.Data.SQLite.SQLiteConnection", "Mono.Data.SQLite", flags);
            }

            return(type == null
                ? throw new TypeLoadException("Could neither load System.Data.SQLite.SQLiteConnection nor Mono.Data.SQLite.SQLiteConnection!")
                : (IDbConnection)Activator.CreateInstance(type));
        }
コード例 #11
0
ファイル: MysqlStorage.cs プロジェクト: CaveSystems/cave-data
        /// <inheritdoc />
        protected override IDbConnection GetDbConnectionType()
        {
            var flags = AppDom.LoadFlags.NoException;
            var type  =
                AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySql.Data", flags) ??
                AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySqlConnector", flags) ??
                AppDom.FindType("MySqlConnector.MySqlConnection", "MySqlConnector", flags);

            if ((type == null) && AllowAssemblyLoad)
            {
                //try with unsafe load
                flags |= AppDom.LoadFlags.LoadAssemblies;
                type   =
                    AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySql.Data", flags) ??
                    AppDom.FindType("MySql.Data.MySqlClient.MySqlConnection", "MySqlConnector", flags) ??
                    AppDom.FindType("MySqlConnector.MySqlConnection", "MySqlConnector", flags);
            }

            return(type == null
                ? throw new TypeLoadException("Could not load type MySql.Data.MySqlClient.MySqlConnection!")
                : (IDbConnection)Activator.CreateInstance(type));
        }
コード例 #12
0
        void ExplainType(WebData data, string name)
        {
            Type t = AppDom.FindType(name, AppDom.LoadMode.NoException);

            if (t == null)
            {
                throw new WebServerException(WebError.InvalidParameters, 0, string.Format("Type {0} is unknown!", name));
            }

            if (t != null)
            {
                if (t.IsEnum)
                {
                    ExplainEnum(data, t);
                    return;
                }
                if (!t.IsPrimitive && t.IsValueType)
                {
                    ExplainStruct(data, t);
                    return;
                }
            }
            throw new WebServerException(WebError.InvalidOperation, 0, string.Format("Type {0} cannot be explained!", name));
        }
コード例 #13
0
 public void SystemUri()
 {
     var type = typeof(Uri);
     var result = AppDom.FindType(type.AssemblyQualifiedName);
     Assert.AreEqual(type, result);
 }
コード例 #14
0
        internal static RowLayout LoadFieldDefinition(DataReader reader, out int version)
        {
            var dateTimeKind   = DateTimeKind.Unspecified;
            var dateTimeType   = DateTimeType.Undefined;
            var stringEncoding = StringEncoding.UTF8;

            if (reader.ReadString(8) != "DatTable")
            {
                throw new FormatException();
            }

            version = reader.Read7BitEncodedInt32();
            if ((version < 1) || (version > 4))
            {
                throw new InvalidDataException("Unknown Table version!");
            }

            // read name and create layout
            var layoutName = reader.ReadString();
            var fieldCount = reader.Read7BitEncodedInt32();
            var fields     = new FieldProperties[fieldCount];

            for (var i = 0; i < fieldCount; i++)
            {
                var fieldName        = reader.ReadString();
                var dataType         = (DataType)reader.Read7BitEncodedInt32();
                var fieldFlags       = (FieldFlags)reader.Read7BitEncodedInt32();
                var databaseDataType = dataType;
                switch (dataType)
                {
                case DataType.Enum:
                    databaseDataType = DataType.Int64;
                    break;

                case DataType.User:
                case DataType.String:
                    databaseDataType = DataType.String;
                    if (version > 2)
                    {
                        stringEncoding = (StringEncoding)reader.Read7BitEncodedInt32();
                    }
                    else
                    {
                        stringEncoding = StringEncoding.UTF8;
                    }

                    break;

                case DataType.TimeSpan:
                    if (version > 3)
                    {
                        dateTimeType = (DateTimeType)reader.Read7BitEncodedInt32();
                    }

                    break;

                case DataType.DateTime:
                    if (version > 1)
                    {
                        dateTimeKind = (DateTimeKind)reader.Read7BitEncodedInt32();
                        dateTimeType = (DateTimeType)reader.Read7BitEncodedInt32();
                    }
                    else
                    {
                        dateTimeKind = DateTimeKind.Utc;
                        dateTimeType = DateTimeType.BigIntHumanReadable;
                    }

                    break;
                }

                Type valueType = null;
                if ((dataType & DataType.MaskRequireValueType) != 0)
                {
                    var typeName = reader.ReadString();
                    valueType = AppDom.FindType(typeName.BeforeFirst(','), typeName.AfterFirst(',').Trim());
                }

                var field = fields[i] = new FieldProperties
                {
                    Index          = i,
                    Flags          = fieldFlags,
                    DataType       = dataType,
                    ValueType      = valueType,
                    Name           = fieldName,
                    TypeAtDatabase = databaseDataType,
                    NameAtDatabase = fieldName,
                    DateTimeType   = dateTimeType,
                    DateTimeKind   = dateTimeKind,
                    StringEncoding = stringEncoding
                };
                field.Validate();
            }

            return(RowLayout.CreateUntyped(layoutName, fields));
        }
コード例 #15
0
ファイル: Bitmap32.cs プロジェクト: elfen20/cave-media
        static Bitmap32()
        {
            var loaders = AppDom.GetTypes <IBitmap32Loader>();

            Loader = loaders.FirstOrDefault();
        }