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); } }
/// <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")); }
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); }
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")); } }
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); } }