/// <summary>Initializes a new instance of the <see cref="AspNetMvcDependencyResolver"/> class.</summary>
        /// <param name="compositionContext">The composition context.</param>
        public AspNetMvcDependencyResolver(CompositionContext compositionContext)
        {
            _compositionContext = compositionContext;

            var factory = new AspNetMvcControllerFactory(_compositionContext);
            _compositionContext.AddPart<IControllerFactory, AspNetMvcControllerFactory>(factory);
        }
        public static void Add(CompositionContext compositionContext)
        {
            if (CompositionContexts.ContainsKey(compositionContext.Name))
                CompositionContexts.Remove(compositionContext.Name);

            CompositionContexts.Add(compositionContext.Name, compositionContext);
        }
        public void When_adding_by_type_then_object_should_automatically_be_instantiated()
        {
            var ctx = new CompositionContext();
            ctx.AddPart<ExportClass, ExportClass>();

            var obj = new ImportClass();
            ctx.SatisfyImports(obj);

            Assert.IsTrue(obj.Object != null);
        }
Example #4
0
        /// <summary>Gets the part.</summary>
        /// <param name="ctx">The context.</param>
        /// <returns>The part. </returns>
        public object GetPart(CompositionContext ctx)
        {
            if (PerRequest)
                return CreatePart(ctx);

            if (_part == null)
            {
                lock (_lock)
                {
                    if (_part == null)
                    {
                        var part = CreatePart(ctx);
                        SetPart(ctx, part);
                    }
                }
            }
            return _part;
        }
		public void BasicCompose( CompositionContext host )
		{
			var serviceProvider = DefaultServices.Default.Cached();
			var sinkOne = host.GetExport<ILoggerHistory>();
			var sinkTwo = host.GetExport<ILoggerHistory>();
			Assert.Same( sinkOne, sinkTwo );
			Assert.Same( serviceProvider.Get<ILoggerHistory>(), sinkOne );

			var first = host.GetExport<ILogger>();
			var second = host.GetExport<ILogger>();
			Assert.Same( first, second );
			Assert.Same( serviceProvider.Get<ILogger>(), first );

			Assert.Empty( sinkOne.Events );
			var current = sinkOne.Events.Count();
			first.Information( "Testing this out." );
			Assert.NotEmpty( sinkOne.Events );
			Assert.True( sinkOne.Events.Count() > current );
		}
Example #6
0
        /// <summary>
        /// SharingBoundary,Sharedテスト
        /// </summary>
        /// <param name="container"></param>
        private static void Test2(CompositionContext container)
        {
            var factory = container.GetExport<ShareFactory>();

            ShareTest test1, test2, test3;

            using (var ctx = factory.Factory.CreateExport())
            {
                if (container == ctx.Value)
                    System.Diagnostics.Debug.WriteLine("Container same");
                else
                    System.Diagnostics.Debug.WriteLine("Container not same");

                test1 = ctx.Value.GetExport<ShareTest>();

                if (test1.Child == test1.Parent.Child)
                    System.Diagnostics.Debug.WriteLine("Child same (test1-test1.Child)");
                else
                    System.Diagnostics.Debug.WriteLine("Child not same (test1-test1.Child)");

                test2 = ctx.Value.GetExport<ShareTest>();

                if (test1.Child == test2.Child)
                    System.Diagnostics.Debug.WriteLine("Child same (test1-test2)");
                else
                    System.Diagnostics.Debug.WriteLine("Child not same (test1-test2)");
            }

            using (var ctx = factory.Factory.CreateExport())
            {
                test3 = ctx.Value.GetExport<ShareTest>();

                if (test1.Child == test3.Child)
                    System.Diagnostics.Debug.WriteLine("Child same (test1-test3)");
                else
                    System.Diagnostics.Debug.WriteLine("Child not same (test1-test3)");

                var logger = ctx.Value.GetExport<LoggerTest>();
                logger.WriteLog();
            }
        }
        /// <summary>
        /// Initialize the composition provider.
        /// </summary>
        /// <param name="applicationContext">A container supplying composed parts.</param>
        public static void Initialize(CompositionContext applicationContext)
        {
            if (applicationContext == null) throw new ArgumentNullException("applicationContext");

            lock (_initLock)
            {
                if (_applicationContext != null) throw new InvalidOperationException("Composition provider is already initialized.");
                _applicationContext = applicationContext;
            }

            var rcfContract = new CompositionContract(
                typeof(ExportFactory<CompositionContext>),
                null,
                new Dictionary<string, object> {
                    { "SharingBoundaryNames", new[] { Boundaries.HttpContext, Boundaries.DataConsistency, Boundaries.UserIdentity }}
            });

            _requestContextFactory = (ExportFactory<CompositionContext>)_applicationContext.GetExport(rcfContract);

            DependencyResolver.SetResolver(new ComposedDependencyResolver());
        }
Example #8
0
        private object CreatePart(CompositionContext ctx)
        {
#if !LEGACY
            var constructor = Type
                .GetTypeInfo()
                .DeclaredConstructors
                .First();
#else
            var constructor = Type
                .GetConstructors()
                .First();
#endif

            var parameters = constructor
                .GetParameters()
                .Select(p => ctx.GetPart(p.ParameterType, null))
                .ToArray();

            var part = constructor.Invoke(parameters);
            return part;
        }
 public void Build(CompositionContext context) {
     var scope = new CompositionContext(ident, context) { IsChained = true };
     // TODO: Again this looks very wrong!
     scope.Builder.Build(scope);
 }
 public SystemCompositionServiceLocator(CompositionContext host)
 {
     _host = host;
     Thread.MemoryBarrier();
     ServiceLocator.SetLocatorProvider(() => this);
 }
Example #11
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="container"></param>
 private static void Test1(CompositionContext container)
 {
     var test = container.GetExport<LoggerTest>();
     test.WriteLog();
 }
Example #12
0
 IEnumerable IExtensible.Extend(CompositionContext context) => _textConverter.Extend(context);
Example #13
0
        /// <inheritdoc/>
        public override void BeginContext(CompositionContext context, Boolean force)
        {
            if (CurrentContext == context && !force)
                return;

            var gfx = Ultraviolet.GetGraphics();

            switch (context)
            {
                case CompositionContext.Scene:
                    {
                        Compose();

                        gfx.SetRenderTarget(rtScene);
                        gfx.Clear(Color.Transparent, 1.0f, 0);
                    }
                    break;

                case CompositionContext.Interface:
                    {
                        gfx.SetRenderTarget(rtInterface);
                        gfx.Clear(Color.Transparent, 1.0f, 0);
                    }
                    break;

                case CompositionContext.Overlay:
                    {
                        gfx.SetRenderTarget(rtInterface);
                    }
                    break;

                default:
                    throw new ArgumentException(nameof(context));
            }

            base.BeginContext(context);
        }
		public void InterfaceExport( CompositionContext host )
		{
			Assert.Same( AssemblyInformationSource.Default, host.GetExport<IParameterizedSource<Assembly, AssemblyInformation>>() );
		}
Example #15
0
 public IEnumerable <TFormat> Extend(CompositionContext context)
 {
     TFormat[] extensions = context.GetExports <TFormat>().ToArray();
     AddRange(extensions);
     return(extensions);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ExportProviderAdapter"/> class.
 /// </summary>
 /// <param name="context">The context providing the exports.</param>
 public ExportProviderAdapter([NotNull] CompositionContext context)
 {
     _context = context;
 }
Example #17
0
 /// <summary>
 /// Prepares the compositor for the specified composition context.
 /// </summary>
 /// <param name="context">The <see cref="CompositionContext"/> to which the compositor should transition.</param>
 /// <param name="force">A value indicating whether to force the compositor to prepare the device for
 /// the specified context, even if the compositor thinks the device is already prepared for the context.</param>
 public virtual void BeginContext(CompositionContext context, Boolean force = false)
 {
     this.currentContext = context;
 }
Example #18
0
 IEnumerable IExtensible.Extend(CompositionContext context) => Extend(context);
Example #19
0
 public IEnumerable <TMedia> Extend(CompositionContext context) => MediaCatalog.Extend(context);
Example #20
0
 public MefHostServices(CompositionContext compositionContext)
 {
     _compositionContext = compositionContext;
 }
Example #21
0
 public static IEnumerable <Lazy <TExtension, TMetadata> > TryGetExports <TExtension, TMetadata>(this CompositionContext compositionContext)
 {
     try
     {
         return(compositionContext.GetExports <Lazy <TExtension, TMetadata> >());
     }
     catch (Exception)
     {
         return(null);
     }
 }
Example #22
0
 public MefHostServices(CompositionContext compositionContext) =>
Example #23
0
 IEnumerable <IDocumentOutput <string> > IExtensible <IDocumentOutput <string> > .Extend(CompositionContext context) => ExtensibleOutputs.Extend(context);
 public ModelShapeBuilder Builder(IContent model,CompositionContext context) {
     var paradigms = context.Get<ContentList,ParadigmsContext>();
     var builder = _origami.ContentBuilder(model).WithDisplayType(context.Get<ContentList, ShapeMetadata>().DisplayType);
     if (paradigms != null) {
         builder.WithParadigms(paradigms);
     }
     return builder;
 }
 protected override bool IsInScope(CompositionContext context) {
     return (context.Identifier == _ident);
 }
        public void When_loading_objects_from_assembly_then_they_should_be_accessible()
        {
            var ctx = new CompositionContext();
            ctx.AddPartsFromAssembly(GetType().GetTypeInfo().Assembly);

            var obj = new ImportClass2();
            ctx.SatisfyImports(obj);

            Assert.IsTrue(obj.Object1 != null);
        }
 public MefServiceLocator(CompositionContext container)
 {
     this.container = container;
 }
Example #28
0
 IEnumerable <IDocumentWriter> IExtensible <IDocumentWriter> .Extend(CompositionContext context) => ExtensibleWriters.Extend(context);
Example #29
0
 public virtual void Build(CompositionContext context) {
     _Locked = true;
     foreach (var builder in Builders) {
         builder.Build(context);
     }
 }
Example #30
0
 /// <summary>Sets the part.</summary>
 /// <param name="ctx">The context.</param>
 /// <param name="part">The part.</param>
 public void SetPart(CompositionContext ctx, object part)
 {
     ctx.SatisfyImports(_part);
     lock (_lock)
         _part = part;
 }
		public void BasicCompositionWithParameter( CompositionContext host, string text )
		{
			var test = host.GetExport<IParameterService>();
			var parameter = Assert.IsType<Parameter>( test.Parameter );
			Assert.Equal( "WithInstance by ParameterService", parameter.Message );
		}
 /// <summary>
 /// DissonantLeapRuleEvaluator constructor.
 /// </summary>
 /// <param name="scaleDegreeEvaluator">The ScaleDegreeEvaluator to use</param>
 /// <param name="context">The CompositionContext to use</param>
 public DissonantLeapRuleEvaluator(ScaleDegreeEvaluator scaleDegreeEvaluator, CompositionContext context)
 {
     _scaleDegreeEvaluator = scaleDegreeEvaluator;
     _context = context;
 }
        public void When_adding_object_and_name_then_it_should_be_loadable()
        {
            var ctx = new CompositionContext();
            var part1 = new ExportClass();
            var part2 = new ExportClass();

            ctx.AddPart<ExportClass, ExportClass>(part1, "1");
            ctx.AddPart<ExportClass, ExportClass>(part2, "2");

            var obj = new ImportClass2();
            ctx.SatisfyImports(obj);

            Assert.AreEqual(part1, obj.Object1);
            Assert.AreEqual(part2, obj.Object2);
        }
		public void FactoryWithParameterDelegate( CompositionContext host, string message )
		{
			var factory = host.GetExport<Func<Parameter, IParameterService>>();
			Assert.NotNull( factory );

			var parameter = new Parameter();
			var created = factory( parameter );
				
			Assert.Same( parameter, created.Parameter );
			Assert.Equal( "WithInstance by ParameterService", parameter.Message );

			var test = host.GetExport<IParameterService>();
			var p = Assert.IsType<Parameter>( test.Parameter );
			Assert.Equal( "WithInstance by ParameterService", p.Message );
			Assert.NotSame( parameter, p );
		}
        public void When_instantiating_class_with_ctor_arguments_then_the_needed_objects_get_created()
        {
            var ctx = new CompositionContext();

            ctx.AddPart<ExportClass1, ExportClass1>();
            ctx.AddPart<ExportClassWithCtor, ExportClassWithCtor>();

            var part = ctx.GetPart<ExportClassWithCtor>();

            Assert.IsNotNull(part.Import);
            Assert.AreEqual(part.Import, ctx.GetPart<ExportClass1>());
        }
		public void ExportWhenAlreadyRegistered( CompositionContext host )
		{
			var item = host.GetExport<ExportedItem>();
			Assert.IsType<ExportedItem>( item );
			Assert.False( Condition.Default.Get( item ).IsApplied );
		}
        public void When_adding_object_then_it_should_be_loadable()
        {
            var ctx = new CompositionContext();
            var part = new ExportClass();
            ctx.AddPart<ExportClass, ExportClass>(part);

            var obj = new ImportClass();
            ctx.SatisfyImports(obj);

            Assert.AreEqual(part, obj.Object);
        }
		public void FactoryInstance( CompositionContext host )
		{
			var service = host.GetExport<IBasicService>();
			Assert.IsType<BasicService>( service );
			Assert.NotSame( service, host.GetExport<IBasicService>() );
			Assert.True( Condition.Default.Get( service ).IsApplied );

			var factory = host.GetExport<Func<IBasicService>>();
			Assert.NotNull( factory );
			var created = factory();
			Assert.NotSame( factory, service );
			Assert.IsType<BasicService>( created );
			Assert.True( Condition.Default.Get( created ).IsApplied );
		}
		public void Composition( CompositionContext host )
		{
			var item = host.GetExport<ExportedItem>();
			Assert.NotNull( item );
			Assert.False( Condition.Default.Get( item ).IsApplied );
		}
		public void VerifyInstanceExport( CompositionContext host, [Service]ImmutableArray<Assembly> assemblies )
		{
			var composed = host.GetExport<ImmutableArray<Assembly>>();
			Assert.Equal( assemblies, composed );
		}
 protected override bool IsInScope(CompositionContext context) {
     return !context.IsChained;
 }
		public void SharedComposition( CompositionContext host )
		{
			var service = host.GetExport<ISharedService>();
			Assert.IsType<SharedService>( service );
			Assert.Same( service, host.GetExport<ISharedService>() );
			Assert.True( Condition.Default.Get( service ).IsApplied );
		}
 /// <summary>Initializes a new instance of the <see cref="AspNetMvcControllerFactory"/> class.</summary>
 /// <param name="compositionContext">The composition context.</param>
 public AspNetMvcControllerFactory(CompositionContext compositionContext)
 {
     _compositionContext = compositionContext;
 }
Example #44
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="container"></param>
        private static void Test1(CompositionContext container)
        {
            var test = container.GetExport <LoggerTest>();

            test.WriteLog();
        }