Пример #1
0
 protected virtual void RegisterObjectContainer()
 {
     IObjectContainerFactory factory = new ObjectContainerFactory();
     var container = factory.CreateContainer(Server.MapPath("~/unity.config"));
     GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
     //GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new UnityDependencyResolver(container));
 }
Пример #2
0
        protected virtual void RegisterObjectContainer()
        {
            IObjectContainerFactory factory = new ObjectContainerFactory();
            var container = factory.CreateContainer(Server.MapPath("~/unity.config"));

            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
            //GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new UnityDependencyResolver(container));
        }
Пример #3
0
 /// <summary>
 ///     opens an
 ///     <see cref="Db4objects.Db4o.IObjectContainer">IObjectContainer</see>
 ///     on the specified database file for local use.
 ///     <br />
 ///     <br />
 ///     A database file can only be opened once, subsequent attempts to
 ///     open another
 ///     <see cref="Db4objects.Db4o.IObjectContainer">IObjectContainer</see>
 ///     against the same file will result in a
 ///     <see cref="Db4objects.Db4o.Ext.DatabaseFileLockedException"> DatabaseFileLockedException</see>
 ///     .
 ///     <br />
 ///     <br />
 ///     Database files can only be accessed for readwrite access from one
 ///     process at one time. All versions except for db4o mobile edition
 ///     use an internal mechanism to lock the database file for other
 ///     processes.
 ///     <br />
 ///     <br />
 /// </summary>
 /// <param name="config">
 ///     a custom
 ///     <see cref="Db4objects.Db4o.Config.IConfiguration">IConfiguration</see>
 ///     instance to be obtained via
 ///     <see cref="newConfiguration">newConfiguration</see>
 /// </param>
 /// <param name="databaseFileName">
 ///     an absolute or relative path to the database
 ///     file
 /// </param>
 /// <returns>
 ///     an open
 ///     <see cref="Db4objects.Db4o.IObjectContainer">IObjectContainer</see>
 /// </returns>
 /// <seealso cref="Db4objects.Db4o.Config.IConfiguration.ReadOnly">
 ///     Db4objects.Db4o.Config.IConfiguration.ReadOnly
 /// </seealso>
 /// <seealso cref="Db4objects.Db4o.Config.IConfiguration.Encrypt">
 ///     Db4objects.Db4o.Config.IConfiguration.Encrypt
 /// </seealso>
 /// <seealso cref="Db4objects.Db4o.Config.IConfiguration.Password">
 ///     Db4objects.Db4o.Config.IConfiguration.Password
 /// </seealso>
 /// <exception cref="Db4objects.Db4o.Ext.Db4oIOException">
 ///     I/O operation failed or was unexpectedly
 ///     interrupted.
 /// </exception>
 /// <exception cref="Db4objects.Db4o.Ext.DatabaseFileLockedException">
 ///     the required database file is locked by
 ///     another process.
 /// </exception>
 /// <exception cref="Db4objects.Db4o.Ext.IncompatibleFileFormatException">
 ///     runtime
 ///     <see cref="Db4objects.Db4o.Config.IConfiguration">configuration</see>
 ///     is not compatible with the configuration of the database file.
 /// </exception>
 /// <exception cref="Db4objects.Db4o.Ext.OldFormatException">
 ///     open operation failed because the database file is in old format
 ///     and
 ///     <see cref="Db4objects.Db4o.Config.IConfiguration.AllowVersionUpdates">
 ///         Db4objects.Db4o.Config.IConfiguration.AllowVersionUpdates
 ///     </see>
 ///     is set to false.
 /// </exception>
 /// <exception cref="Db4objects.Db4o.Ext.DatabaseReadOnlyException">
 ///     database was configured as read-only.
 /// </exception>
 public static IEmbeddedObjectContainer OpenFile(IEmbeddedConfiguration config, string
                                                 databaseFileName)
 {
     if (null == config)
     {
         throw new ArgumentNullException();
     }
     return(ObjectContainerFactory.OpenObjectContainer(config, databaseFileName));
 }
Пример #4
0
        protected virtual IExecutionRule GetExecutionRule()
        {
            IObjectContainer objectContainer = ObjectContainerFactory.GetObjectContainer();

            if (!objectContainer.IsRegistered(typeof(IExecutionRule)))
            {
                objectContainer.RegisterType <IExecutionRule, NullExecutionRule>(new object[0]);
            }
            return(objectContainer.Resolve <IExecutionRule>());
        }
Пример #5
0
        public virtual void EnvTest_IOC_TypeBySelf()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterType <Dog, Dog>();

            var instance = container.Resolve <Dog>();

            Assert.AreEqual(instance.GetType(), typeof(Dog));
        }
Пример #6
0
        public virtual void EnvTest_IOC_TypeWithoutRegister()
        {
            var container = ObjectContainerFactory.CreateContainer();
            var dog       = container.Resolve <Dog>();

            Assert.AreEqual(dog.GetType(), typeof(Dog));
            var bigDog = container.Resolve <BigDog>();

            Assert.AreEqual(bigDog.GetType(), typeof(BigDog));
        }
Пример #7
0
        /// <summary>
        /// 后注册的项,可以覆盖前面注册的项。
        /// </summary>
        public virtual void EnvTest_IOC_Register_ReplaceByAfter()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterType <Dog, Dog>();
            container.RegisterType <Dog, BigDog>();
            container.RegisterType <Dog, SmallDog>();

            var instance = container.Resolve <Dog>();

            Assert.AreEqual(instance.GetType(), typeof(SmallDog));
        }
Пример #8
0
        public virtual void EnvTest_IOC_Interface_RegisterByType()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterInstance(typeof(IPlant), typeof(Tree));

            var instance = container.Resolve <IPlant>();

            Assert.IsTrue(instance is Tree);
            var instance2 = container.Resolve <IPlant>();

            Assert.IsTrue(instance == instance2);
        }
Пример #9
0
        public virtual void EnvTest_IOC_CtorNeedInterface()
        {
            var container = ObjectContainerFactory.CreateContainer();
            var smallDog  = container.Resolve <SmallDog>();

            Assert.IsNotNull(smallDog.Parent);

            var bigDog = new BigDog();

            container.RegisterInstance(bigDog);
            var smallDog2 = container.Resolve <SmallDog>();

            Assert.AreEqual(bigDog, smallDog2.Parent);
        }
Пример #10
0
        /// <summary>
        /// Create a new type adapter from currect factory
        /// </summary>
        /// <returns>Created type adapter</returns>
        public static ITypeAdapter CreateAdapter()
        {
            if (_currentTypeAdapterFactory == null)
            {
                lock (lock_flag)
                {
                    if (_currentTypeAdapterFactory == null)
                    {
                        _currentTypeAdapterFactory = ObjectContainerFactory.CreateContainer().Resolve <ITypeAdapterFactory>();
                    }
                }
            }

            return(_currentTypeAdapterFactory.Create());
        }
Пример #11
0
        /// <summary>
        /// 没有注册的接口是无法获取实例的。
        /// </summary>
        public virtual void EnvTest_IOC_Interface_ErrorWithoutRegister()
        {
            var  container = ObjectContainerFactory.CreateContainer();
            bool success   = true;

            try
            {
                container.Resolve <IAnimal>();
            }
            catch
            {
                success = false;
            }
            Assert.IsFalse(success);
        }
Пример #12
0
        /// <summary>
        /// 实例依赖的接口还没有注册的话,是无法创建实例的。
        /// </summary>
        public virtual void EnvTest_IOC_Interface_RegisterByType_Dependency_Error()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterInstance(typeof(IAnimal), typeof(Rabbit));
            bool success = false;

            try
            {
                var rabbit = container.Resolve <IAnimal>();
                success = true;
            }
            catch { }
            Assert.IsFalse(success);
        }
Пример #13
0
        /// <summary>
        /// Rabbit 依赖 IPlant,但是一样可以获取到它之后注册的 Tree 实例。
        /// </summary>
        public virtual void EnvTest_IOC_Interface_RegisterByType_Dependency()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterInstance(typeof(IAnimal), typeof(Rabbit));
            container.RegisterInstance(typeof(IPlant), typeof(Tree));

            var instance = container.Resolve <IAnimal>();

            Assert.IsTrue(instance is Rabbit);

            var rabbit = instance as Rabbit;

            Assert.IsTrue(rabbit.Food is Tree);
        }
Пример #14
0
        public virtual void EnvTest_IOC_TypeByType()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterType <Dog, BigDog>();

            var instance = container.Resolve <Dog>();

            Assert.IsTrue(instance is BigDog);

            var smallDog = new SmallDog(instance as BigDog);

            container.RegisterInstance <Dog>(smallDog);
            instance = container.Resolve <Dog>();
            Assert.IsTrue(instance == smallDog);
        }
Пример #15
0
        public virtual void EnvTest_IOC_Interface()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterType <IAnimal, Dog>();

            var instance = container.Resolve <IAnimal>();

            Assert.IsTrue(instance is Dog);

            var cat = new Cat();

            container.RegisterInstance <IAnimal>(cat);
            instance = container.Resolve <IAnimal>();
            Assert.IsTrue(instance == cat);
        }
Пример #16
0
        /// <summary>
        /// 启动所有的 实体插件
        /// </summary>
        internal static void StartupAppPlugins()
        {
            var libraries = GetAppPlugins();

            foreach (var pluginAssembly in libraries)
            {
                //调用 ILibrary
                var library = pluginAssembly.Instance as AppPlugin;
                if (library != null)
                {
                    library.Initialize(_appCore);
                }
            }
            ObjectContainerFactory.SetProvider(new UnityContainerAdapterFactory());
            Composer.RegisterAllPluginsByAttribute();
        }
Пример #17
0
 public static ICacheProvider GetCache(string key)
 {
     if (string.IsNullOrWhiteSpace(key))
     {
         return(instance);
     }
     if (!instances.ContainsKey(key))
     {
         lock (_cacheLock)
         {
             if (!instances.ContainsKey(key))
             {
                 instances.Add(key, ObjectContainerFactory.CreateContainer().Resolve <ICacheProvider>(key));
             }
         }
     }
     return(instances[key]);
 }
Пример #18
0
        public virtual void EnvTest_IOC_ResolveAll()
        {
            var container = ObjectContainerFactory.CreateContainer();

            container.RegisterType <IAnimal, Dog>();
            container.RegisterType <IAnimal, BigDog>("BigDog");
            container.RegisterType <IAnimal, SmallDog>("SmallDog");
            container.RegisterInstance <IAnimal>(new Cat {
                Name = "null"
            });
            container.RegisterInstance <IAnimal>(new Cat {
                Name = "another"
            }, "another");

            var instances = container.ResolveAll <IAnimal>();

            Assert.AreEqual(instances.Count(), 3);
            Assert.IsTrue(instances.Any(i => i is BigDog));
            Assert.IsTrue(instances.Any(i => i is SmallDog));
            Assert.IsTrue(instances.Any(i => i is Cat));
            Assert.IsTrue(instances.Any(i =>
            {
                var smallDog = i as SmallDog;
                if (smallDog != null)
                {
                    return(smallDog.Parent != null);
                }
                return(true);
            }));
            Assert.IsTrue(instances.Any(i =>
            {
                var cat = i as Cat;
                if (cat != null)
                {
                    return(cat.Name == "another");
                }
                return(true);
            }));
        }
Пример #19
0
 public static IObjectContainer OpenFile(IConfiguration config, string databaseFileName
                                         )
 {
     return(ObjectContainerFactory.OpenObjectContainer(Db4oLegacyConfigurationBridge.AsEmbeddedConfiguration
                                                           (config), databaseFileName));
 }
Пример #20
0
 /// <summary>
 /// 插件的初始化方法。
 /// </summary>
 /// <param name="app">应用程序对象。</param>
 public override void Initialize(IApp app)
 {
     ObjectContainerFactory.SetProvider(new UnityContainerAdapterFactory());
 }
Пример #21
0
 public RabbitMQBuilder RegisterObjectContainer(IObjectContainer objectContainer)
 {
     ObjectContainerFactory.RegisterContainer(objectContainer);
     return(this);
 }