Transformação de argumento de etapa Specflow no conteúdo da célula da tabela com CreateInstance

Alguém já resolveu o enigma de como aplicar as transformações de argumento de etapa SpecFlow às células de uma tabela, em conjunto com o SpecFlow.Assist CreateInstance / CreateSet? (código combinado aqui para economizar espaço)

Given a table like the following:
 | Price | Zip   | Effective Date |
 | 10.00 | 90210 | in 2 days      |
When the 'given' step executes
And the table data populates a poco
Then the effective date should be transformed into a DateTime with value of 2 days from today

[Given(@"a table like the following:")]
public void GivenATableLikeTheFollowing(Table table)
{
    var temp = table.CreateInstance<Temp>();
}

internal class Temp
{
    decimal Price { get; set; }
    int Zip { get; set; }
    DateTime EffectiveDate { get; set; }
}

[Binding]
public class Transforms
{
    [StepArgumentTransformation(@"in (\d+) days?")]
    public DateTime InXDaysTransform(int days)
   {
      return DateTime.Today.AddDays(days);
   }
}

StepArgumentTransformation as ligações aparentemente não se aplicam ao conteúdo da célula da tabela (já que o argumento da etapa é do tipo Tabela), mas de alguma forma o SpecFlow.Assist CreateInstance / CreateSet ainda transformará os dados da célula para tipos básicos.

Por exemplo, se o conteúdo da Data efetiva for '13/11/2016' em vez de 'em 2 dias', a propriedade EffectiveDate do poco subjacente se transformará em um DateTime muito bem (ou um int, decimal, etc.).

Vejo algumas outras soluções, como aplicar uma conversão na própria definição de etapa, comoaqui ou criando uma StepArgumentTransformationpara toda a mesa, mas ... contras óbvias. Atualizar:essa questão é semelhante, mas as soluções também evitam misturar StepArgumentTransformation com CreateInstance / CreateSet.

Há também uma seção noAuxiliares do SpecFlow Assist documentos sobre a extensão registrando recuperadores / comparadores de valor, mas no meu exemplo, já existe um conjunto DateTime. Então, talvez um tipo DateTime personalizado? Parece que talvez possa haver uma verificação para StepArgumentTransformations nos tipos conhecidos ou algo assim.

NoRecuperador de data e hora, algo como..

    public virtual DateTime GetValue(string value)
    {
        var returnValue = DateTime.MinValue;
        // check for StepArgumentTransformations here first?
        DateTime.TryParse(value, out returnValue);
        return returnValue;
    }

Alguma idéia do que estou faltando para obter a StepArgumentTransformation para aplicar ao conteúdo da célula da tabela ao usar table.CreateInstance? Ou uma das soluções mencionadas é a melhor / única maneira?

questionAnswers(2)

yourAnswerToTheQuestion