看过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框架不是一种选择.
我的数据库中有一个bitmasked int字段.通常我通过C#代码管理它,但现在我需要使用T-SQL在掩码中翻转一下
我如何完成以下任务:
我要翻转的位:1 << 8(256)
我翻转之前的掩码值:143
翻转后的掩码值:399
这可以在没有T-SQL中缺少的位运算符的情况下完成,对吧?
我需要将我的自定义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实现,但是如何将其连接起来还不清楚.(在这篇文章中)
有人有例子吗?
我有一个BaseController我ViewData通过覆盖在集合中放入一些数据OnActionExecuting.
现在我有一个ChildController不需要该视图数据的Action .
为此,我创建了一个DontPopulateViewDataActionFilterAttribute,在其上设置bool,以BaseController防止BaseController填充viewdata.
问题:ActionFilters OnActionExecuting方法在BaseController之前和之后调用.
ActionFilters是否会OnActionExecuting在基本控制器中被覆盖之前被调用,有没有办法解决这个问题?
我在开发阶段使用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中管理模式更改的好方法吗?
有什么重大缺点吗?