Shared/Kernelx.ClientContexts/Contexts/ClientContextWorkload.cs
(完整代码) 1KBusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Kernelx.Contexts
{
public class ClientContextWorkload : DefaultContextWorkload, IContextWorkload
{
public static void Initialization(Action<ContextOptions> action)
{
var options = new ContextOptions();
action(options);
var services = options.GetServices();
var defaultUser = new DefaultCurrentUser("-1", "unknown", false);
object getService(Type type)
{
var service = services.FirstOrDefault(x => x.ServiceType == type);
if (service != null)
{
var obj= service.ImplementationFactory?.Invoke(ContextWorkload.Current)
?? service.ImplementationInstance;
if (obj == null && service.ImplementationType!=null)
return getService(service.ImplementationType);
return obj;
}
return null;
}
ContextWorkload._Configre(() => new ClientContextWorkload(
()=> getService(typeof(ICurrentUser)) as ICurrentUser, defaultUser
, getService, () => new DefaultContextScope()));
}
private ClientContextWorkload(Func<ICurrentUser> getCurrentUser, ICurrentUser defaultCurrentUser
, Func<Type, object> getService, Func<IContextScope> createScope)
: base(getCurrentUser, defaultCurrentUser, getService, createScope) { }
private IRequestParameter _requestParameter;
public override object GetService(Type type)
{
if (type == typeof(IRequestParameter))
return _requestParameter;
return base.GetService(type);
}
internal void SetRequestParameter(IRequestParameter requestParameter) => _requestParameter = requestParameter;
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
