在C#中,我们在类型字符串上有这个非静态方法:
"abc".ToUpper()
Run Code Online (Sandbox Code Playgroud)
但对于char,我们需要使用静态方法:
char.ToUpper('a')
Run Code Online (Sandbox Code Playgroud)
在向初学者介绍c#时,他们总是希望能够编写以下内容:
'a'.ToUpper()
Run Code Online (Sandbox Code Playgroud)
有没有人有这样设计的见解?
我唯一能想到的就是性能,但我也希望类型字符串的静态ToUpper()也是如此.
我正在尝试HttpContextBase在我的SignalR集线器中注入一个:
public class EventHub : Hub, IDisconnect
{
private readonly HttpContextBase _httpContextBase;
public EventHub(HttpContextBase httpContextBase)
{
_httpContextBase = httpContextBase;
}
[...]
}
Run Code Online (Sandbox Code Playgroud)
注册码如下所示:
private static void InitAutofac()
{
var builder = new ContainerBuilder();
var assembly = typeof (MvcApplication).Assembly;
builder.RegisterControllers(assembly).PropertiesAutowired();
builder.RegisterModule(new AutofacWebTypesModule());
builder.RegisterFilterProvider();
builder.RegisterAssemblyTypes(assembly)
.Where(InterfaceBasedInjectedClasses())
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
builder.RegisterAssemblyTypes(assembly)
.Where(InterfaceLessInjectedClasses())
.InstancePerLifetimeScope();
builder.RegisterType<SurvivalContainer>().InstancePerLifetimeScope();
builder.RegisterType<EventHub>().InstancePerLifetimeScope();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalHost.DependencyResolver = new SignalR.Autofac.AutofacDependencyResolver(container);
RouteTable.Routes.MapHubs();
}
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是:
[DependencyResolutionException:从请求实例的作用域中看不到具有匹配'httpRequest'的标记的作用域.这通常表示注册为每HTTP请求的组件正被SingleInstance()组件(或类似场景)重新请求.在Web集成下,始终从DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime请求依赖项,从不从容器本身请求]
堆栈跟踪:
Autofac.Core.Lifetime.MatchingScopeLifetime.FindScope(ISharingLifetimeScope mostNestedVisibleScope) +160
Autofac.Core.Resolving.InstanceLookup..ctor(IComponentRegistration registration, IResolveOperation context, ISharingLifetimeScope mostNestedVisibleScope, IEnumerable`1 parameters) +57 …Run Code Online (Sandbox Code Playgroud)