Esempio n. 1
0
        public void ShouldThrowActivationExceptionWhenMoreThanOneInstanceAvailble()
        {
            const int SEQUENCE_MORE_THAN_ONE_ELEMENT_HRESULT = -2146233079;

            object myInstance  = new object();
            object myInstance2 = new object();

            CompositionContainer compositionContainer = new CompositionContainer();

            compositionContainer.ComposeExportedValue <object>(myInstance);
            compositionContainer.ComposeExportedValue <object>(myInstance2);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);

            try
            {
                containerAdapter.GetInstance(typeof(object));
                Assert.Fail("Expected exception not thrown.");
            }
            catch (ActivationException ex)
            {
                Assert.AreEqual(typeof(InvalidOperationException), ex.InnerException.GetType());
                Assert.IsTrue(ex.InnerException.HResult == SEQUENCE_MORE_THAN_ONE_ELEMENT_HRESULT);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// The default constructor
        /// </summary>
        public void CreateComposition()
        {
            var funcName = "CreateComposition";

            Logger.DebugFormat("{0} <-- Start", funcName);

            if (this.compositionContainer != null)
            {
                return;
            }

            var aggregateCatalog = new AggregateCatalog();
            var basePath         = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");
            var patterns         = new string[]
            {
                "RFO.AspNet.Utilities.dll",
                "RFO.Common.Utilities.dll"
            };

            foreach (string pattern in patterns)
            {
                aggregateCatalog.Catalogs.Add(new DirectoryCatalog(basePath, pattern));
            }

            this.compositionContainer = new CompositionContainer(aggregateCatalog);

            var mefServiceLocator = new MefServiceLocatorAdapter(this.compositionContainer);

            ServiceLocator.SetLocatorProvider(() => mefServiceLocator);

            this.compositionContainer.SatisfyImportsOnce(this);

            Logger.DebugFormat("{0} --> End", funcName);
        }
        public void ShouldForwardResolveToInnerContainerWhenKeyIsUsed()
        {
            object myInstance = new object();

            CompositionContainer compositionContainer = new CompositionContainer();
            compositionContainer.ComposeExportedValue<object>("key", myInstance);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);

            Assert.AreSame(myInstance, containerAdapter.GetInstance(typeof(object), "key"));
        }
Esempio n. 4
0
        public void ShouldForwardResolveToInnerContainerWhenKeyIsUsed()
        {
            object myInstance = new object();

            CompositionContainer compositionContainer = new CompositionContainer();

            compositionContainer.ComposeExportedValue <object>("key", myInstance);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);

            Assert.AreSame(myInstance, containerAdapter.GetInstance(typeof(object), "key"));
        }
        public void ShouldForwardResolveAllToInnerContainer()
        {
            object objectOne = new object();
            object objectTwo = new object();

            CompositionContainer compositionContainer = new CompositionContainer();
            compositionContainer.ComposeExportedValue<object>(objectOne);
            compositionContainer.ComposeExportedValue<object>(objectTwo);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);
            IList<object> returnedList = containerAdapter.GetAllInstances(typeof(object)).ToList();
            Assert.AreSame(returnedList[0], objectOne);
            Assert.AreSame(returnedList[1], objectTwo);
        }
Esempio n. 6
0
        public void ShouldForwardResolveAllToInnerContainer()
        {
            object objectOne = new object();
            object objectTwo = new object();

            CompositionContainer compositionContainer = new CompositionContainer();

            compositionContainer.ComposeExportedValue <object>(objectOne);
            compositionContainer.ComposeExportedValue <object>(objectTwo);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);
            IList <object>  returnedList     = containerAdapter.GetAllInstances(typeof(object)).ToList();

            Assert.AreSame(returnedList[0], objectOne);
            Assert.AreSame(returnedList[1], objectTwo);
        }
        public void ShouldThrowActivationExceptionWhenMoreThanOneInstanceAvailble()
        {
            object myInstance = new object();
            object myInstance2 = new object();

            CompositionContainer compositionContainer = new CompositionContainer();
            compositionContainer.ComposeExportedValue<object>(myInstance);
            compositionContainer.ComposeExportedValue<object>(myInstance2);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);
            try
            {
                containerAdapter.GetInstance(typeof (object));
                Assert.Fail("Expected exception not thrown.");
            }
            catch(ActivationException ex)
            {
                Assert.AreEqual(typeof(InvalidOperationException), ex.InnerException.GetType());
                Assert.IsTrue(ex.InnerException.Message.Contains("Sequence contains more than one element"));
            }
        }
Esempio n. 8
0
        public void ShouldThrowActivationExceptionWhenMoreThanOneInstanceAvailble()
        {
            object myInstance  = new object();
            object myInstance2 = new object();

            CompositionContainer compositionContainer = new CompositionContainer();

            compositionContainer.ComposeExportedValue <object>(myInstance);
            compositionContainer.ComposeExportedValue <object>(myInstance2);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);

            try
            {
                containerAdapter.GetInstance(typeof(object));
                Assert.Fail("Expected exception not thrown.");
            }
            catch (ActivationException ex)
            {
                Assert.AreEqual(typeof(InvalidOperationException), ex.InnerException.GetType());
                Assert.IsTrue(ex.InnerException.Message.Contains("Sequence contains more than one element"));
            }
        }
        public void ShouldThrowActivationExceptionWhenMoreThanOneInstanceAvailble()
        {
            const int SEQUENCE_MORE_THAN_ONE_ELEMENT_HRESULT = -2146233079;

            object myInstance = new object();
            object myInstance2 = new object();

            CompositionContainer compositionContainer = new CompositionContainer();
            compositionContainer.ComposeExportedValue<object>(myInstance);
            compositionContainer.ComposeExportedValue<object>(myInstance2);

            IServiceLocator containerAdapter = new MefServiceLocatorAdapter(compositionContainer);
            try
            {
                containerAdapter.GetInstance(typeof(object));
                Assert.Fail("Expected exception not thrown.");
            }
            catch (ActivationException ex)
            {
                Assert.AreEqual(typeof(InvalidOperationException), ex.InnerException.GetType());
                Assert.IsTrue(ex.InnerException.HResult == SEQUENCE_MORE_THAN_ONE_ELEMENT_HRESULT);
            }
        }