本文整理汇总了C#中IServiceLocator.Batch方法的典型用法代码示例。如果您正苦于以下问题:C# IServiceLocator.Batch方法的具体用法?C# IServiceLocator.Batch怎么用?C# IServiceLocator.Batch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IServiceLocator
的用法示例。
在下文中一共展示了IServiceLocator.Batch方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetupFilterRegistries
/// <summary>
/// Queries the <see cref="IServiceLocator"/> instance for any instances of <see cref="IFilterRegistry"/> to process.
/// </summary>
/// <param name="serviceLocator">Current <see cref="IServiceLocator"/> instance for the application.</param>
public virtual void SetupFilterRegistries(IServiceLocator serviceLocator) {
var filterRegistries = GetFilterRegistries(serviceLocator);
if (filterRegistries == null) return;
var filterList = new List<Filter>();
var typeList = new List<Type>();
foreach (var filterRegistry in filterRegistries) {
var registrations = filterRegistry.GetFilterRegistrations();
using (serviceLocator.Batch()) {
foreach (var registration in registrations) {
var filterType = registration.FilterType;
// Prevent double registration of the same filter
if (typeList.Contains(filterType)) continue;
serviceLocator.Register(filterType, filterType);
typeList.Add(filterType);
}
}
filterList.AddRange(registrations);
}
typeList.Clear();
FilterProviders.Providers.Add(new FilterRegistryProvider(serviceLocator, filterList));
}
示例2: UseThisServiceLocator
private void UseThisServiceLocator(IServiceLocator serviceLocator)
{
using (serviceLocator.Batch())
{
serviceLocator.Register(serviceLocator);
context.Set(serviceLocator);
}
}
示例3: ProcessViewEngineProvider
protected virtual void ProcessViewEngineProvider(IServiceLocator locator) {
var viewEngineProviders = GetViewEngineProviders(locator);
if (viewEngineProviders == null || viewEngineProviders.Count == 0) return;
var viewEngines = GetFilteredList(viewEngineProviders);
if (viewEngines == null || viewEngines.Count == 0) return;
using (locator.Batch()) {
foreach (var engine in viewEngines) {
locator.Register(typeof(IViewEngine), engine.Type, engine.Name);
}
}
}
示例4: SetupBinderRegistries
/// <summary>
/// Queries the <see cref="IServiceLocator"/> instance for any instances of <see cref="ModelBinderRegistry"/> to process.
/// </summary>
/// <param name="serviceLocator">Current <see cref="IServiceLocator"/> instance for the application.</param>
public virtual void SetupBinderRegistries(IServiceLocator serviceLocator) {
var binderRegistries = GetBinderRegistries(serviceLocator);
if (binderRegistries == null) return;
var aggregateCache = new TypeCache();
foreach (var modelBinderRegistry in binderRegistries) {
var binderCache = modelBinderRegistry.GetBinderRegistrations();
if (binderCache == null) continue;
// We will register auto-register the binders for you
using (serviceLocator.Batch()) {
foreach (var binderType in binderCache.Values) {
serviceLocator.Register(binderType, binderType);
}
}
aggregateCache.Merge(binderCache);
}
ModelBinderProviders.BinderProviders.Add(new ModelBinderRegistryProvider(serviceLocator, aggregateCache));
}