C# 全局筛选正确的注册方式
我有一个异步操作过滤器(IAsyncationFilter)。我希望它能在全球范围内,以各种方式发挥作用。我可以在网上注册C# 全局筛选正确的注册方式,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我有一个异步操作过滤器(IAsyncationFilter)。我希望它能在全球范围内,以各种方式发挥作用。我可以在网上注册 services.AddMvc(options => { options.Filters.Add(typeof(RequestFilter)); }); 在创业班 我想登记一下 services.RegisterRequestFilter(); 我可以用一个扩展方法,比如 public static void RegisterRequestFi
services.AddMvc(options =>
{
options.Filters.Add(typeof(RequestFilter));
});
在创业班
我想登记一下
services.RegisterRequestFilter();
我可以用一个扩展方法,比如
public static void RegisterRequestFilter(this IServiceCollection services)
{
services.AddMvc(options =>
{
options.Filters.Add(typeof(RequestFilter));
});
}
然后在启动时使用它,但我不知道它是否正确,因为将出现两次服务。AddMvc
:一次不带任何参数,另一次带options参数
这是正确的方法还是有更好的解决方案?有多个
AddMvc()
调用不会有问题。服务,AddMvc
以一种不会被多次注册的方式注册,即使是这样,通常也不是问题
当然,您可以简单地将扩展方法命名为AddMvcWithRequestFilter
,只调用该方法,而不单独调用AddMvc()。那样的话,你只会叫它一次。但同样,这不会有太大的区别
如果确实不想从扩展方法中调用AddMvc()
,也可以直接配置mvcopions
,如下所示:
public static void RegisterRequestFilter(this IServiceCollection services)
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(typeof(RequestFilter));
});
}
然后,您可以在启动中这样调用它:
services.AddMvc()
.AddRequestFilter();
这可能是这里最“干净”的方法。有多个AddMvc()
调用不会有问题。服务,AddMvc
以一种不会被多次注册的方式注册,即使是这样,通常也不是问题
当然,您可以简单地将扩展方法命名为AddMvcWithRequestFilter
,只调用该方法,而不单独调用AddMvc()。那样的话,你只会叫它一次。但同样,这不会有太大的区别
如果确实不想从扩展方法中调用AddMvc()
,也可以直接配置mvcopions
,如下所示:
public static void RegisterRequestFilter(this IServiceCollection services)
{
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(typeof(RequestFilter));
});
}
然后,您可以在启动中这样调用它:
services.AddMvc()
.AddRequestFilter();
这可能是这里最“干净”的方法。如果你添加扩展方法,你不再需要其他调用。我认为这是最好的方法,至少我不能想出更好的方法如果你添加扩展方法,你不再需要其他调用。我认为这是最好的方法,至少我想不出更好的