【发布时间】:2014-11-16 15:54:33
【问题描述】:
我有一个名为UsersOnlineModule 的类是从IHttpModul 创建的。在这个类中,我想注入两个属性,为此我使用Simple Injector。
public class UsersOnlineModule
{
public ITenantStore tenantStore;
public ICacheManager cm;
我从 IHttpModule 调用这个类:
Modules.UsersOnline.UsersOnlineModule usersOnlineModule =
new Modules.UsersOnline.UsersOnlineModule();
usersOnlineModule.TrackUser(app.Context);
但是我的IHttpModule 不知道缓存管理器或tenantStore。我可以通过从容器中获取对象来解决这个问题,但是我不希望创建对 Simple Injector 的引用。有没有其他不错的选择来解决这两个属性而不创建对我的容器的引用?
-- 更新
我将示例修改如下:
class ImportAttributePropertySelectionBehavior : IPropertySelectionBehavior
{
public bool SelectProperty(Type serviceType, PropertyInfo propertyInfo)
{
return typeof(IHttpModule).IsAssignableFrom(serviceType) &&
propertyInfo.GetCustomAttributes<ImportAttribute>().Any();
}
}
private static void RegisterHttpModules(Container container)
{
var httpModules =
from assembly in BuildManager.GetReferencedAssemblies().Cast<Assembly>()
where !assembly.IsDynamic
where !assembly.GlobalAssemblyCache
from type in assembly.GetExportedTypes()
where type.IsSubclassOf(typeof(IHttpModule))
select type;
httpModules.ToList().ForEach(container.Register);
}
但它没有返回我的任何 httpmodules。
【问题讨论】:
标签: c# asp.net dependency-injection simple-injector