Example #1
0
        private void AddComponent(Type type, DBConfigEntity sysConfig, DBConfigEntity logConfig, MongoClient sysDbClient, MongoClient logDbClient, IMongoDatabase sysDb, IMongoDatabase logDb)
        {
            if (!typeof(IRpository).IsAssignableFrom(type))
            {
                return;
            }

            var isSingle = ObjectStorage.IsSingleType(type);

            if (!isSingle)
            {
                throw new ComponentException("规定Rpository类型组件只能定义成单例(SingleCase)组件。");
            }

            var component = ObjectStorage.Fetch(type);
            var rpository = component as IRpository;

            if (rpository.DBType == DBType.SysDb)
            {
                rpository.SetDBContext(sysDb, sysConfig.DatabaseName, sysDbClient);
                Game.Scene.AddComponent(component);
            }
            else if (rpository.DBType == DBType.LoggerDb)
            {
                rpository.SetDBContext(logDb, logConfig.DatabaseName, logDbClient);
                Game.Scene.AddComponent(component);
            }
        }