我非常想做这个人描述的事情(将依赖项传递给自定义属性):
但是,我想用 StructureMap 4.0 来做,而不是 Ninject。
我的项目在我的 dll 中设置了自定义属性Data Layer
,并且我已经安装了 StructureMap并在我的UI Layer
.
我已经确定我可能必须使用 StructureMap 进行 Setter 注入:
http://docs.structuremap.net/ConstructorAndSetterInjection.htm
但是,我在数据层中的自定义属性无法正常工作。
我认为为了使事情正常进行,我也应该将 Structuremap 安装到我的数据层中,并将其放在 IoC.cs 中:
public static IContainer Initialize()
{
Container container = new Container(x =>
{
x.ForConcreteType<My_AuthorizeADAttribute>().Configure.Setter<My_AppDataContext>().IsTheDefault(); //not sure about this line
});
return container;
}
哦..我的自定义属性:
public class My_AuthorizeADAttribute : AuthorizeAttribute
{
public IMy_Data_Context _dataContext;
[SetterProperty]
public IMy_Data_Context DataContext
{
get { return _dataContext; }
set { _dataContext = value; }
}
这是正确的做法吗?我想我漏了一步。(但话又说回来,我还没有真正在同一个项目中的多个 dll 上设置 Structuremap。想知道使用 StructureMap 的多个项目是否需要更多东西。
目前,应用程序将运行,但不会填充自定义属性中的属性。
更新:这个 StackOverflow 问题很有帮助: