2017-04-24 54 views
0

在TinyIoC文档我看到如何重写autoregistrations南锡/ TinyIoC

默认TinyIoC将注册具体类的多实例和接口注册为单身

测试与南希这种行为,则如预期在下面的构造通过例如,单(因为它解决了一个接口):

public class HelloModule : NancyModule 
{ 
    public HelloModule(IMyInterface mi) 
    { 
     ... 
    } 
} 

我想李可以为此类型重写此行为,以便获得每个请求实例。我看到的TinyIoC文档中的其他地方

AutoRegister还可以与“正常”

因此,鉴于MyInterfaceImpl : IMyInterface,我说的Nancy.Bootstrapper.IRegistrations的实现,像这样

public class Registrations : IRegistrations 
{ 
    public IEnumerable<TypeRegistration> TypeRegistrations 
    { 
     get 
     { 
      return new List<TypeRegistration>() 
      { 
       new TypeRegistration(typeof(IMyInterface), typeof(MyInterfaceImpl), Lifetime.PerRequest) 
      }; 
     } 
    } 

    public IEnumerable<CollectionTypeRegistration> CollectionTypeRegistrations { get; private set; } 
    public IEnumerable<InstanceRegistration> InstanceRegistrations { get; private set; } 
} 

,这似乎工作。

这是完成注册覆盖的可靠方法吗?这个额外的注册是否实际上删除了现有的自动注册?我想确保这种类型的注册没有多个注册,并且由于注册类型集合中的任意排序或其他可能会改变的内部结构,我的结果不仅仅是一个快乐事故。

回答

0

您应该可以通过在您的Nancy网站中添加自定义boostrapper并覆盖ApplicationStartup方法来覆盖TinyIocContainer。在这里您可以修改容器并覆盖默认注册。