小编Chr*_*ger的帖子

如何使用Windsor将依赖项注入ActionFilterAttributes

看过NInject如何做到这一点,AutoFac可以做到这一点我试图弄清楚如何使用Castle Windsor将依赖注入MVC​​ ActionFilters

目前我正在使用一个丑陋的静态IoC助手类来解析构造函数代码中的依赖关系,如下所示:

public class MyFilterAttribute : ActionFilterAttribute
{    
  private readonly IUserRepository _userRepository;
  public MyFilterAttribute() : this(IoC.Resolve<IUserRepository>()) { }
  public MyFilterAttribute(IUserRepository userRepository)
  {
     _userRepository = userRepository;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想从我的过滤器中删除静态反模式IoC的东西.

任何暗示我将如何与温莎城堡一起做这件事?

不,改变DI框架不是一种选择.

asp.net-mvc dependency-injection castle-windsor

17
推荐指数
2
解决办法
8627
查看次数

T-SQL中的位翻转操作

我的数据库中有一个bitmasked int字段.通常我通过C#代码管理它,但现在我需要使用T-SQL在掩码中翻转一下

我如何完成以下任务:

我要翻转的位:1 << 8(256)

我翻转之前的掩码值:143

翻转后的掩码值:399

这可以在没有T-SQL中缺少的位运算符的情况下完成,对吧?

t-sql sql-server bit-manipulation

16
推荐指数
2
解决办法
3万
查看次数

MVC 3中ModelBinder构造函数注入的示例IModelBinderProvider实现

我需要将我的自定义ModelBinder连接到MVC 3中的DI容器,但我无法使其工作.

所以.这就是我所拥有的:一个带有构造函数注入服务的ModelBinder.

public class ProductModelBinder : IModelBinder{
  public ProductModelBinder(IProductService productService){/*sets field*/}
  // the rest don't matter. It works.
}
Run Code Online (Sandbox Code Playgroud)

如果我这样添加它我的活页夹工作正常:

ModelBinders.Binders.Add(typeof(Product),
     new ProductModelBinder(IoC.Resolve<IProductService>()));
Run Code Online (Sandbox Code Playgroud)

但这是做旧的方式,我不希望如此.

我需要的是如何将模型绑定器挂钩到我注册的IDependencyResolver.

根据Brad Wilson的说法,秘密是使用IModelBinderProvider实现,但是如何将其连接起来还不清楚.(在这篇文章中)

有人有例子吗?

asp.net-mvc modelbinders asp.net-mvc-3

7
推荐指数
2
解决办法
6001
查看次数

在BaseController的OnActionExecuting之前调用FilterAttribute的OnActionExecuting

我有一个BaseControllerViewData通过覆盖在集合中放入一些数据OnActionExecuting.

现在我有一个ChildController不需要该视图数据的Action .

为此,我创建了一个DontPopulateViewDataActionFilterAttribute,在其上设置bool,以BaseController防止BaseController填充viewdata.

问题:ActionFilters OnActionExecuting方法在BaseController之前和之后调用.

ActionFilters是否会OnActionExecuting在基本控制器中被覆盖之前被调用,有没有办法解决这个问题?

asp.net-mvc action-filter

6
推荐指数
1
解决办法
1万
查看次数

NHibernate中的Configuration.GenerateSchemaUpdateScript()是管理数据库模式更改的好方法

我在开发阶段使用NHibernate映射作为我的应用程序的定义模式,而我正在使用该NHibernate.Tool.hbm2ddl.SchemaExport()方法生成一个创建脚本的模式定义.

现在,我已经考虑使用该Configuration.GenerateSchemaUpdateScript()方法生成如下的数据库更改脚本:


var dialect = Dialect.GetDialect(configuration.Properties);
string[] schemaUpdateScript;
using (var conn = new SqlConnection(
        configuration.GetProperty("connection.connection_string")))
{
  conn.Open();
  schemaUpdateScript = configuration.GenerateSchemaUpdateScript(dialect, 
                            new DatabaseMetadata(conn, dialect));
}
Run Code Online (Sandbox Code Playgroud)

在此之后,我将架构更新脚本保存到以时间戳命名的脚本文件.

这是在NHibernate中管理模式更改的好方法吗?

有什么重大缺点吗?

nhibernate

5
推荐指数
1
解决办法
1546
查看次数