2012-12-11 62 views
5

我有一个集中的StructureMap配置,各种用户界面应用程序附加到。我从来没有需要修改“核心”配置只能附加到它。今天我遇到了一个实例,我需要修改/删除特定应用程序的核心配置。当然,我可以将核心配置代码移出到不同的应用程序,但在我这样做之前,我想确保我没有在StructureMap API中丢失明显的东西。下面是我的核心配置的简化版本:如何修改以前配置的StructureMap配置?

ObjectFactory.Initialize(cfg => 
{ 
    cfg.Scan(scan => 
     { 
      scan.Assembly("Core"); 
      scan.WithDefaultConventions(); 

      scan.ConnectImplementationsToTypesClosing(typeof(IValidationRule<>)); 
      // more after this.... 
     } 
} 

在运行时,这一个应用,我想删除的配置类型关闭IValidationRule,但还没有提出任何可行的。所有的弹出方法似乎都以单例的意思为中心。由于我不处理一个单身以下不工作:

ObjectFactory.Model.For(typeof(IValidationRule<>)).EjectAndRemoveAll(); //no work 

ObjectFactory.Model.EjectAndRemove(typeof(IValidationRule<>)); //nor does this 

有没有办法,我可以修改我的StructureMap配置不找IValidationRule秒的方法吗?我可以弹出IValidationRule s的非单例实例吗?我有其他选项可以修改我的StructureMap配置吗?

回答

2

下面是怎么回事?我认为这应该工作。

ObjectFactory.Model.EjectAndRemoveTypes(match 
    => match != null && match.GetInterfaces().Any(i 
     => i.Name.Contains("IValidationRule"))); 
+0

在StructureMap3中可能出现这种情况,其中ObjectFactory已被弃用? – rexdefuror