• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# IPicoContainer类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中IPicoContainer的典型用法代码示例。如果您正苦于以下问题:C# IPicoContainer类的具体用法?C# IPicoContainer怎么用?C# IPicoContainer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



IPicoContainer类属于命名空间,在下文中一共展示了IPicoContainer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ResolveInstance

		/// <summary>
		/// Resolve the parameter for the expected type. The method will return <code>null</code>
		/// If the expected type is not one of the collection types {@link Array},
		/// {@link Collection}or {@link Map}. An empty collection is only a valid resolution, if
		/// the <code>emptyCollection</code> flag was set.
		/// </summary>
		/// <param name="container"></param>
		/// <param name="adapter"></param>
		/// <param name="expectedType"></param>
		/// <returns>the instance of the collection type or <code>null</code></returns>
		public Object ResolveInstance(IPicoContainer container, IComponentAdapter adapter, Type expectedType)
		{
			// type check is done in isResolvable
			Object result = null;
			Type collectionType = GetCollectionType(expectedType);
			if (collectionType != null)
			{
				IDictionary dictionary = GetMatchingComponentAdapters(container, adapter, componentKeyType, GetValueType(expectedType));
				if (typeof (Array).IsAssignableFrom(collectionType))
				{
					result = GetArrayInstance(container, expectedType, dictionary);
				}
				else if (typeof (IDictionary).IsAssignableFrom(collectionType))
				{
					result = GetDictionaryInstance(container, expectedType, dictionary);
				}
				else if (typeof (ICollection).IsAssignableFrom(collectionType))
				{
					result = GetCollectionInstance(container, expectedType, dictionary);
				}
				else
				{
					throw new PicoIntrospectionException(expectedType.Name + " is not a collective type");
				}
			}
			return result;
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:37,代码来源:CollectionComponentParameter.cs


示例2: WrapComponentInstances

        protected virtual IPicoContainer WrapComponentInstances(Type decoratingComponentAdapterClass,
                                                                IPicoContainer picoContainer,
                                                                object[] wrapperDependencies)
        {
            Assert.IsTrue(typeof (DecoratingComponentAdapter).IsAssignableFrom(decoratingComponentAdapterClass));
            IMutablePicoContainer mutablePicoContainer = new DefaultPicoContainer();
            int size = (wrapperDependencies != null ? wrapperDependencies.Length : 0) + 1;
            ICollection allComponentAdapters = picoContainer.ComponentAdapters;

            foreach (object adapter in allComponentAdapters)
            {
                IParameter[] parameters = new IParameter[size];
                parameters[0] = new ConstantParameter(adapter);
                for (int i = 1; i < parameters.Length; i++)
                {
                    parameters[i] = new ConstantParameter(wrapperDependencies[i - 1]);
                }
                IMutablePicoContainer instantiatingPicoContainer =
                    new DefaultPicoContainer(new ConstructorInjectionComponentAdapterFactory());
                instantiatingPicoContainer.RegisterComponentImplementation("decorator", decoratingComponentAdapterClass,
                                                                           parameters);
                mutablePicoContainer.RegisterComponent(
                    (IComponentAdapter) instantiatingPicoContainer.GetComponentInstance("decorator"));
            }
            return mutablePicoContainer;
        }
开发者ID:smmckay,项目名称:picocontainer,代码行数:26,代码来源:AbstractComponentAdapterTestCase.cs


示例3: ImplementationHidingPicoContainer

 /// <summary>
 /// Creates a new container with a parent container.
 /// </summary>
 /// <param name="caf"></param>
 /// <param name="parent"></param>
 /// <param name="lifecycleManager"></param>
 public ImplementationHidingPicoContainer(IComponentAdapterFactory caf, IPicoContainer parent,
                                          ILifecycleManager lifecycleManager)
     : base(new DefaultPicoContainer(caf, parent, lifecycleManager))
 {
     this.caf = caf;
     this.lifecycleManager = lifecycleManager;
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:13,代码来源:ImplementationHidingPicoContainer.cs


示例4: CachingPicoContainer

 /// <summary>
 /// Creates a new container with a parent container.
 /// </summary>
 /// <param name="caf"></param>
 /// <param name="parent"></param>
 /// <param name="lifecycleManager"></param>
 public CachingPicoContainer(CachingComponentAdapterFactory caf, IPicoContainer parent,
                             ILifecycleManager lifecycleManager)
     : base(new DefaultPicoContainer(caf, parent, lifecycleManager))
 {
     this.lifecycleManager = lifecycleManager;
     this.caf = caf;
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:13,代码来源:CachingPicoContainer.cs


示例5: CreatePicoContainer

 protected override IMutablePicoContainer CreatePicoContainer(IPicoContainer parent,
                                                              ILifecycleManager lifecycleManager)
 {
     return
         new ImplementationHidingCachingPicoContainer(
             new CachingComponentAdapterFactory(new DefaultComponentAdapterFactory()), parent, lifecycleManager);
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:7,代码来源:ImplementationHidingCachingPicoContainerTestCase.cs


示例6: CreateContainerFromScript

		protected virtual IMutablePicoContainer CreateContainerFromScript(IPicoContainer parentContainer,
		                                                                  IList assemblies)
		{
			IScript script = CreateScript(assemblies);
			script.Parent = parentContainer;
			return script.Compose();
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:7,代码来源:ScriptedContainerBuilder.cs


示例7: GetComponentInstance

        public override Object GetComponentInstance(IPicoContainer container)
        {
            Object componentKey = Delegate.ComponentKey;
            Type[] types;
            if (componentKey is Type && ((Type) Delegate.ComponentKey).IsInterface)
            {
                types = new Type[] {(Type) Delegate.ComponentKey};
            }
            else if (componentKey is Type[])
            {
                types = (Type[]) componentKey;
            }
            else
            {
                if (strict)
                {
                    throw new PicoIntrospectionException("In strict mode, "
                                                         + GetType().Name
                                                         +
                                                         " only allows components registered with interface keys (System.Type or System.Type[])");
                }
                return Delegate.GetComponentInstance(container);
            }

            return CreateProxy(types, container);
        }
开发者ID:smmckay,项目名称:picocontainer,代码行数:26,代码来源:ImplementationHidingComponentAdapter.cs


示例8: ImplementationHidingCachingPicoContainer

 private ImplementationHidingCachingPicoContainer(IPicoContainer parent, CachingComponentAdapterFactory caf,
                                                  ILifecycleManager lifecycleManager)
     : base(new ImplementationHidingPicoContainer(caf, parent, lifecycleManager))
 {
     this.caf = caf;
     this.lifecycleManager = lifecycleManager;
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:7,代码来源:ImplementationHidingCachingPicoContainer.cs


示例9: CreatePicoContainer

 protected override IMutablePicoContainer CreatePicoContainer(IPicoContainer parent)
 {
     return
         new DefaultPicoContainer(
             new CachingComponentAdapterFactory(
                 new ImplementationHidingComponentAdapterFactory(
                     new ConstructorInjectionComponentAdapterFactory(), false)), parent);
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:8,代码来源:ImplementationHidingWithDefaultPicoContainerTestCase.cs


示例10: GetComponentInstance

		/// <summary>
		/// Gets the component instance. Only one instance is created of the type
		/// </summary>
		/// <returns>a component instance</returns>
		/// <exception cref="PicoContainer.PicoInitializationException">if the component could not be instantiated.</exception>    
		/*public override object ComponentInstance
		{
			get
			{
				if (instanceReference.Get() == null)
				{
					instanceReference.Set(base.ComponentInstance);
				}
				return instanceReference.Get();
			}

		}*/

		public override object GetComponentInstance(IPicoContainer container)
		{
			if (instanceReference.Get() == null)
			{
				instanceReference.Set(base.GetComponentInstance(container));
			}
			return instanceReference.Get();
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:26,代码来源:CachingComponentAdapter.cs


示例11: GetComponentInstance

 public override object GetComponentInstance(IPicoContainer container)
 {
     if (constructorInjectionGuard == null)
     {
         constructorInjectionGuard = new ConstructorInjectionGuard(this, container);
     }
     return constructorInjectionGuard.Observe(ComponentImplementation);
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:8,代码来源:ConstructorInjectionComponentAdapter.cs


示例12: Dispose

		public virtual void Dispose(IPicoContainer node)
		{
			IList disposables = node.GetComponentInstancesOfType(typeof (IDisposable));
			for (int i = disposables.Count - 1; 0 <= i; i--)
			{
				DoMethod(disposeMethod, disposables[i]);
			}
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:8,代码来源:DefaultLifecycleManager.cs


示例13: BuildContainer

		protected IPicoContainer BuildContainer(ScriptedContainerBuilder builder, IPicoContainer parentContainer, IList assemblies)
		{
			SimpleReference sr = new SimpleReference();
			SimpleReference pr = new SimpleReference();
			pr.Set(parentContainer);
			builder.BuildContainer(sr, pr, assemblies);
			return (IPicoContainer) sr.Get();
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:8,代码来源:AbstractScriptedContainerBuilderTestCase.cs


示例14: Start

		public virtual void Start(IPicoContainer node)
		{
			IList startables = node.GetComponentInstancesOfType(typeof (IStartable));

			foreach (object startable in startables)
			{
				DoMethod(startMethod, startable);
			}
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:9,代码来源:DefaultLifecycleManager.cs


示例15: Verify

        public override void Verify(IPicoContainer container)
        {
            if (verifyingGuard == null)
            {
                verifyingGuard = new DefaultVerifyingGuard(this, container);
            }

            verifyingGuard.Observe(ComponentImplementation);
        }
开发者ID:smmckay,项目名称:picocontainer,代码行数:9,代码来源:InstantiatingComponentAdapter.cs


示例16: Verify

 public void Verify(IPicoContainer container, IComponentAdapter adapter, Type expectedType)
 {
     if (!expectedType.IsInstanceOfType(constantValue))
     {
         throw new PicoIntrospectionException(expectedType.FullName
                                              + " is not assignable from "
                                              + constantValue.GetType().FullName);
     }
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:9,代码来源:ConstantParameter.cs


示例17: ResolveInstance

 public virtual object ResolveInstance(IPicoContainer container, IComponentAdapter adapter, Type expectedType)
 {
     IComponentAdapter componentAdapter = ResolveAdapter(container, adapter, expectedType);
     if (componentAdapter != null)
     {
         return container.GetComponentInstance(componentAdapter.ComponentKey);
     }
     return null;
 }
开发者ID:smmckay,项目名称:picocontainer,代码行数:9,代码来源:BasicComponentParameter.cs


示例18: Stop

		public virtual void Stop(IPicoContainer node)
		{
			IList startables = node.GetComponentInstancesOfType(typeof (IStartable));

			for (int i = startables.Count - 1; 0 <= i; i--)
			{
				DoMethod(stopMethod, startables[i]);
			}
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:9,代码来源:DefaultLifecycleManager.cs


示例19: Verify

        public virtual void Verify(IPicoContainer container, IComponentAdapter adapter, Type expectedType)
        {
            IComponentAdapter componentAdapter = ResolveAdapter(container, adapter, expectedType);
            if (componentAdapter == null)
            {
                throw new PicoIntrospectionException(expectedType.Name + " is not resolvable");
            }

            componentAdapter.Verify(container);
        }
开发者ID:smmckay,项目名称:picocontainer,代码行数:10,代码来源:BasicComponentParameter.cs


示例20: SetUp

		protected void SetUp()
		{
			events = new StringBuilder();
			one = new TestComponent("One", events);
			two = new TestComponent("Two", events);
			three = new TestComponent("Three", events);

			mock = new DynamicMock(typeof (IPicoContainer));
			pico = (IPicoContainer) mock.MockInstance;
		}
开发者ID:smmckay,项目名称:picocontainer,代码行数:10,代码来源:DefaultLifecycleManagerTestCase.cs



注:本文中的IPicoContainer类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# IPictureService类代码示例发布时间:2022-05-24
下一篇:
C# IPhoto类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap