本文整理汇总了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;未经允许,请勿转载。 |
请发表评论