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

C# Context.CreationContext类代码示例

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

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



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

示例1: Resolve

		public virtual object Resolve(CreationContext context, Burden burden, IReleasePolicy releasePolicy)
		{
			var instance = CreateInstance(context, burden);
			Track(burden, releasePolicy);
			return instance;

		}
开发者ID:firegrass,项目名称:Castle.Windsor,代码行数:7,代码来源:AbstractLifestyleManager.cs


示例2: GetScope

        public ILifetimeScope GetScope(CreationContext context)
        {
            var messageContext = MessageContext.Current;

            if (messageContext == null)
            {
                throw new InvalidOperationException(string.Format("Attempted to resolve {0} outside of Rebus message context!", context.RequestedType));
            }

            var items = messageContext.TransactionContext.Items;

            object lifetimeScope;

            if (items.TryGetValue(LifestimeScopeItemKey, out lifetimeScope))
            {
                return (ILifetimeScope) lifetimeScope;
            }

            var defaultLifetimeScope = new DefaultLifetimeScope();

            items[LifestimeScopeItemKey] = defaultLifetimeScope;

            messageContext.TransactionContext.OnDisposed(() => defaultLifetimeScope.Dispose());

            return defaultLifetimeScope;
        }
开发者ID:nls75,项目名称:Rebus,代码行数:26,代码来源:RebusScopeAccessor.cs


示例3: GetNewInstance

		private object GetNewInstance(CreationContext context, IReleasePolicy releasePolicy)
		{
			var burden = CreateInstance(context, true);
			cachedBurden = burden;
			Track(burden, releasePolicy);
			return burden.Instance;
		}
开发者ID:corruptmem,项目名称:Castle.Windsor,代码行数:7,代码来源:SingletonLifestyleManager.cs


示例4: GetGenericArguments

 public Type[] GetGenericArguments(ComponentModel model, CreationContext context)
 {
     //LuceneSession<Foo>
     Type sessionType = context.GenericArguments[0];
     Type modelType = sessionType.GetGenericArguments()[0];
     return new[] { modelType };
 }
开发者ID:BosphorusTeam,项目名称:bosphorus.dao,代码行数:7,代码来源:Installer.cs


示例5: Resolve

		public virtual object Resolve(CreationContext context, IReleasePolicy releasePolicy)
		{
			var burden = CreateInstance(context, false);
			Track(burden, releasePolicy);
			return burden.Instance;

		}
开发者ID:Orvid,项目名称:NAntUniversalTasks,代码行数:7,代码来源:AbstractLifestyleManager.cs


示例6: Resolve

		public override object Resolve(CreationContext context, IReleasePolicy releasePolicy)
		{
			// 1. read from cache
			if (cachedBurden != null)
			{
				return cachedBurden.Instance;
			}
			var instanceFromContext = context.GetContextualProperty(ComponentActivator);
			if (instanceFromContext != null)
			{
				//we've been called recursively, by some dependency from base.Resolve call
				return instanceFromContext;
			}

			var initializing = false;
			try
			{
				initializing = init.ExecuteThreadSafeOnce();
				if (cachedBurden != null)
				{
					return cachedBurden.Instance;
				}
				var burden = CreateInstance(context, true);
				cachedBurden = burden;
				Track(burden, releasePolicy);
				return burden.Instance;
			}
			finally
			{
				if (initializing)
				{
					init.EndThreadSafeOnceSection();
				}
			}
		}
开发者ID:hjlfmy,项目名称:Castle.Windsor-READONLY,代码行数:35,代码来源:SingletonLifestyleManager.cs


示例7: Resolve

		public override object Resolve(CreationContext context, IReleasePolicy releasePolicy)
		{
			// 1. read from cache
			if (cachedBurden != null)
			{
				return cachedBurden.Instance;
			}
			var initializing = false;
			try
			{
				initializing = init.ExecuteThreadSafeOnce();
				if (cachedBurden != null)
				{
					return cachedBurden.Instance;
				}
				var burden = CreateInstance(context, true);
				cachedBurden = burden;
				Track(burden, releasePolicy);
				return burden.Instance;
			}
			finally
			{
				if (initializing)
				{
					init.EndThreadSafeOnceSection();
				}
			}
		}
开发者ID:castleproject,项目名称:Windsor,代码行数:28,代码来源:SingletonLifestyleManager.cs


示例8: Resolve

		public override object Resolve(CreationContext context, Burden burden, IReleasePolicy releasePolicy)
		{
			if (cachedBurden != null)
			{
				return cachedBurden.Instance;
			}
			var instanceFromContext = context.GetContextualProperty(ComponentActivator);
			if (instanceFromContext != null)
			{
				//we've been called recursively, by some dependency from base.Resolve call
				return instanceFromContext;
			}
			object instance;
			lock (ComponentActivator)
			{
				if (cachedBurden != null)
				{
					return cachedBurden.Instance;
				}
				instance = base.CreateInstance(context, burden);
				cachedBurden = burden;
			}
			Track(burden, releasePolicy);
			return instance;
		}
开发者ID:firegrass,项目名称:Castle.Windsor,代码行数:25,代码来源:SingletonLifestyleManager.cs


示例9: Create

		public object Create(IProxyFactoryExtension customFactory, IKernel kernel, ComponentModel model,
		                     CreationContext context, params object[] constructorArguments)
		{
			throw new NotImplementedException(
				"You must supply an implementation of IProxyFactory " +
				"to use interceptors on the Microkernel");
		}
开发者ID:gschuager,项目名称:Castle.Windsor,代码行数:7,代码来源:NotSupportedProxyFactory.cs


示例10: GetSubHandler

		protected IHandler GetSubHandler(CreationContext context, Type genericType)
		{
			lock (type2SubHandler)
			{
				IHandler handler;

				if (type2SubHandler.ContainsKey(genericType))
				{
					handler = type2SubHandler[genericType];
				}
				else
				{
					Type service = ComponentModel.Service.MakeGenericType(context.GenericArguments);

					ComponentModel newModel = Kernel.ComponentModelBuilder.BuildModel(
						ComponentModel.Name, service, genericType, ComponentModel.ExtendedProperties);

					newModel.ExtendedProperties[ComponentModel.SkipRegistration] = true;
					CloneParentProperties(newModel);

					// Create the handler and add to type2SubHandler before we add to the kernel.
					// Adding to the kernel could satisfy other dependencies and cause this method
					// to be called again which would result in extra instances being created.
					handler = Kernel.HandlerFactory.Create(newModel);
					type2SubHandler[genericType] = handler;

					Kernel.AddCustomComponent(newModel);
				}

				return handler;
			}
		}
开发者ID:AGiorgetti,项目名称:Castle.InversionOfControl,代码行数:32,代码来源:DefaultGenericHandler.cs


示例11: Resolve

        public override object Resolve(CreationContext context) {
            var current = HttpContext.Current;
            if (current == null)
                throw new InvalidOperationException("HttpContext.Current is null. PerHttpApplicationLifestyle can only be used in ASP.NET");

            var app = current.ApplicationInstance;
            var lifestyleModule = app.Modules
                .Cast<string>()
                .Select(k => app.Modules[k])
                .OfType<PerHttpApplicationLifestyleModule>()
                .FirstOrDefault();
            if (lifestyleModule == null) {
                var message = string.Format("Looks like you forgot to register the http module {0}" +
                                               "\r\nAdd '<add name=\"PerHttpApplicationLifestyle\" type=\"{1}\" />' " +
                                               "to the <httpModules> section on your web.config",
                                               typeof (PerWebRequestLifestyleModule).FullName,
                                               typeof (PerWebRequestLifestyleModule).AssemblyQualifiedName);
                throw new Exception(message);
            }

            if (!lifestyleModule.HasComponent(PerAppObjectID)) {
                var instance = base.Resolve(context);
                lifestyleModule[PerAppObjectID] = instance;
                app.Disposed += (sender, args) => base.Release(instance);
            }

            return lifestyleModule[PerAppObjectID];
        }
开发者ID:nhsevidence,项目名称:Windsor.LifeStyles,代码行数:28,代码来源:PerHttpApplicationLifestyleManager.cs


示例12: Resolve

        public override object Resolve(CreationContext context)
        {
            var store = this.GetStore();

            var instance = base.Resolve(context);

            if (instance == null)
            {
                if (context.Handler.ComponentModel.ExtendedProperties[Constants.RegIsInstanceKey] != null)
                {
                    throw new DependencyResolutionException("Cannot find the instance in the context store.");
                }
            }
            else if (store[Model.Name] == null)
            {
                store[Model.Name] = instance;
                store.GetContextInstances().Add(new ContextStoreDependency(Model.Name, instance, this));
                this.registeredForCleanup = true;
            }

            if (!this.registeredForCleanup)
            {
                store.GetContextInstances().Add(new ContextStoreDependency(Model.Name, instance, this));
                this.registeredForCleanup = true;
            }

            return store[Model.Name];
        }
开发者ID:endjin,项目名称:openrasta-stable,代码行数:28,代码来源:ContextStoreLifetime.cs


示例13: Create

		/// <summary>
		/// Creates the <see cref="ISessionFactory"/> from the configuration
		/// </summary>
		/// <param name="context"></param>
		/// <returns></returns>
		public override object Create(CreationContext context)
		{
			RaiseCreatingSessionFactory();
			var configuration = Model.ExtendedProperties[Constants.SessionFactoryConfiguration]
			                    as Configuration;
			return configuration.BuildSessionFactory();
		}
开发者ID:naveedashraf,项目名称:Castle.Facilities.NHibernateIntegration,代码行数:12,代码来源:SessionFactoryActivator.cs


示例14: Request

		public virtual object Request(CreationContext context, Func<CreationContext, Burden> creationCallback)
		{
			using (rwlock.ForWriting())
			{
				if (!initialized)
				{
					Intitialize(creationCallback, context);
				}

				Burden burden;
				if (available.Count != 0)
				{
					burden = available.Pop();
					context.AttachExistingBurden(burden);
				}
				else
				{
					burden = creationCallback.Invoke(context);
				}
				try
				{
					inUse.Add(burden.Instance, burden);
				}
				catch (NullReferenceException)
				{
					throw new PoolException("creationCallback didn't return a valid burden");
				}
				catch (ArgumentNullException)
				{
					throw new PoolException("burden returned by creationCallback does not have root instance associated with it (its Instance property is null).");
				}
				return burden.Instance;
			}
		}
开发者ID:Orvid,项目名称:NAntUniversalTasks,代码行数:34,代码来源:DefaultPool.cs


示例15: CanResolvePendingDependencies

		private bool CanResolvePendingDependencies(CreationContext context)
		{
			if (CurrentState == HandlerState.Valid)
			{
				return true;
			}
			// detect circular dependencies
			if (IsBeingResolvedInContext(context))
			{
				return context.HasAdditionalParameters;
			}
			var canResolveAll = true;
			foreach (var dependency in DependenciesByService.Values.ToArray())
			{
				
				// a self-dependency is not allowed
				var handler = Kernel.LazyLoadComponentByType(dependency.DependencyKey, dependency.TargetItemType, context.AdditionalParameters);
				if (handler == this || handler == null)
				{
					canResolveAll = false;
					break;
				}
			}
			return (canResolveAll && DependenciesByKey.Count == 0) || context.HasAdditionalParameters;
		}
开发者ID:firegrass,项目名称:Castle.Windsor,代码行数:25,代码来源:DefaultHandler.cs


示例16: CanResolve

		/// <summary>
		///   Returns true if the resolver is able to satisfy the specified dependency.
		/// </summary>
		/// <param name = "context">Creation context, which is a resolver itself</param>
		/// <param name = "contextHandlerResolver">Parent resolver</param>
		/// <param name = "model">Model of the component that is requesting the dependency</param>
		/// <param name = "dependency">The dependency model</param>
		/// <returns>
		///   <c>true</c>
		///   if the dependency can be satisfied</returns>
		public bool CanResolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)
		{
			// 1 - check for the dependency on CreationContext, if present
			if (CanResolveFromContext(context, contextHandlerResolver, model, dependency))
			{
				return true;
			}

			// 2 - check with the model's handler, if not the same as the parent resolver
			if (CanResolveFromHandler(context, contextHandlerResolver, model, dependency))
			{
				return true;
			}

			// 3 - check within parent resolver, if present
			if (CanResolveFromContextHandlerResolver(context, contextHandlerResolver, model, dependency))
			{
				return true;
			}

			// 4 - check within subresolvers
			if (CanResolveFromSubResolvers(context, contextHandlerResolver, model, dependency))
			{
				return true;
			}

			// 5 - normal flow, checking against the kernel
			return CanResolveFromKernel(context, model, dependency);
		}
开发者ID:jmuralimohanbabu,项目名称:Castle.Windsor,代码行数:39,代码来源:DefaultDependencyResolver.cs


示例17: Resolve

		public override object Resolve(CreationContext context)
		{
			var current = HttpContext.Current;

			if (current == null)
				throw new InvalidOperationException(
					"HttpContext.Current is null. PerWebRequestLifestyle can only be used in ASP.Net");

			if (current.Items[PerRequestObjectID] == null)
			{
				if (!PerWebRequestLifestyleModule.Initialized)
				{
					var message =
						string.Format(
							"Looks like you forgot to register the http module {0}{1}Add '<add name=\"PerRequestLifestyle\" type=\"Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor\" />' to the <httpModules> section on your web.config. If you're running IIS7 in Integrated Mode you will need to add it to <modules> section under <system.webServer>",
							typeof(PerWebRequestLifestyleModule).FullName, Environment.NewLine);

					throw new Exception(message);
				}

				var instance = base.Resolve(context);
				current.Items[PerRequestObjectID] = instance;
				PerWebRequestLifestyleModule.RegisterForEviction(this, instance);
			}

			return current.Items[PerRequestObjectID];
		}
开发者ID:vbedegi,项目名称:Castle.InversionOfControl,代码行数:27,代码来源:PerWebRequestLifestyleManager.cs


示例18: Request

		public virtual object Request(CreationContext context)
		{
			object instance;

			using(rwlock.ForWriting())
			{

				if (available.Count != 0)
				{
					instance = available.Pop();

					if (instance == null)
					{
						throw new PoolException("Invalid instance on the pool stack");
					}
				}
				else
				{
					instance = componentActivator.Create(context);

					if (instance == null)
					{
						throw new PoolException("Activator didn't return a valid instance");
					}
				}

				inUse.Add(instance);
			}

			return instance;
		}
开发者ID:gschuager,项目名称:Castle.Windsor,代码行数:31,代码来源:DefaultPool.cs


示例19: GetScope

        public ILifetimeScope GetScope(CreationContext context)
        {
            if (HttpContext.Current == null)
                throw new InvalidOperationException("HttpContext.Current is null. PerWebSessionLifestyle can only be used in ASP.Net");

            return GetScope(new HttpContextWrapper(HttpContext.Current));
        }
开发者ID:Epibatidin,项目名称:FLUX,代码行数:7,代码来源:PerCookieLifestyleAdapter.cs


示例20: Resolve

		public override object Resolve(CreationContext context, Burden burden, IReleasePolicy releasePolicy)
		{
			lock (slot)
			{
				var map = (Dictionary<IComponentActivator, object>)Thread.GetData(slot);

				if (map == null)
				{
					map = new Dictionary<IComponentActivator, object>();

					Thread.SetData(slot, map);
				}

				Object instance;

				if (!map.TryGetValue(ComponentActivator, out instance))
				{
					instance = base.Resolve(context, burden, releasePolicy);
					map.Add(ComponentActivator, instance);
					instances.Add(burden);
				}

				return instance;
			}
		}
开发者ID:firegrass,项目名称:Castle.Windsor,代码行数:25,代码来源:PerThreadLifestyleManager.cs



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C# Framework.Controller类代码示例发布时间:2022-05-24
下一篇:
C# MicroKernel.DefaultKernel类代码示例发布时间: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