title: Specflow step definition inheritance
body: <p>I have ExcelStepDefinition class in which are my steps for excel testing. I have WordStepDefinition class too. Since I have a great number of steps that are same for both classes I made some StepDefinition class which will be base class for those two classes.</p>
  
  <p>In this base class I need to have some args in constructor which depends on what class is instanced (excel or word). I have made all of this, but when I start tests in Nunit it fails with following stack trace:</p>
  
  <pre><code>System.IndexOutOfRangeException : Index was outside the bounds of the array.
  TearDown : System.IndexOutOfRangeException : Index was outside the bounds of the array.
  at TechTalk.SpecFlow.ScenarioContext.GetBindingInstance(Type bindingType)
  at TechTalk.SpecFlow.ScenarioContext.GetBindingInstance(Type bindingType)
  at lambda_method(ExecutionScope )
  at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(Object[] arguments, ITestTracer testTracer, TimeSpan&amp; duration)
  at TechTalk.SpecFlow.TestRunner.FireEvents(BindingEvent bindingEvent, IEnumerable`1 tags)
  at TechTalk.SpecFlow.TestRunner.FireScenarioEvents(BindingEvent bindingEvent)
  at TechTalk.SpecFlow.TestRunner.OnScenarioStart(ScenarioInfo scenarioInfo)
  at ABZ.ExcelTest.DisplayValueOfLinkedItemUsingFormattingRulesDefinedForAGivenLanguageFeature.ScenarioSetup(ScenarioInfo scenarioInfo) in D:\Projects\VS2008\ABZ\ABZ Report Office\ABZ.ExcelTest\ExcelSwitchLanguage.feature.cs:line 0
  at ABZ.ExcelTest.DisplayValueOfLinkedItemUsingFormattingRulesDefinedForAGivenLanguageFeature.DisplayFactValueWithFormattingDefinedInSelectedLanguage(String cell, String column, String label, String lang, String cellValue) in d:\Projects\VS2008\ABZ\ABZ Report Office\ABZ.ExcelTest\ExcelSwitchLanguage.feature:line 23
  --TearDown
  at TechTalk.SpecFlow.ScenarioContext.GetBindingInstance(Type bindingType)
  at TechTalk.SpecFlow.ScenarioContext.GetBindingInstance(Type bindingType)
  at lambda_method(ExecutionScope )
  at TechTalk.SpecFlow.Bindings.MethodBinding.InvokeAction(Object[] arguments, ITestTracer testTracer, TimeSpan&amp; duration)
  at TechTalk.SpecFlow.TestRunner.FireEvents(BindingEvent bindingEvent, IEnumerable`1 tags)
  at TechTalk.SpecFlow.TestRunner.FireScenarioEvents(BindingEvent bindingEvent)
  at TechTalk.SpecFlow.TestRunner.OnScenarioEnd()
  at ABZ.ExcelTest.DisplayValueOfLinkedItemUsingFormattingRulesDefinedForAGivenLanguageFeature.ScenarioTearDown() in D:\Projects\VS2008\ABZ\ABZ Report Office\ABZ.ExcelTest\ExcelSwitchLanguage.feature.cs:line 0
  </code></pre>
  
  <p>Here are following base and derived class(just definition and constructors):</p>
  
  <pre><code>// base class
  [Binding]
      public class StepDefinition : Steps
      {
          IOfficeAppDriver officeAppDriver ;
          public StepDefinition(IReportFactoryAddInGuiElements repo, string application)
          {
              officeAppDriver = new OfficeAppDriver(new ReportFactoryOfficeAddInDriver(repo), application);
          }
  
  // derivded one
  [Binding]   
      public class ExcelStepDefinition : StepDefinition
      {          
          IExcelDriver excelDriver;
          public ExcelStepDefinition() : base(new Excel2007Repository(), "excel")
          {
              excelDriver = new ExcelDriver(officeAppDriver.ReportFactoryOfficeAddInDriver, factReader);          
          }
  </code></pre>
  
  <p>Maybe isn't possible to have args in this constructor, i tried without them and it passed.</p>
  
  <p>Do you know how to solve this?</p>