Autofixture: Adicionar método Create (Type) não genérico

Criado em 19 nov. 2015  ·  2Comentários  ·  Fonte: AutoFixture/AutoFixture

Eu (ab) uso o Autofixture para gerar exemplos de documentação para uma API da Web. As mensagens (comandos e consultas) que o Autofixture criará para mim são serializadas para JSON e se tornam parte da documentação. Isso funciona realmente muito bem e leva algumas linhas de código, em comparação com as centenas de linhas de código feio que o modelo VS para API da Web gera em sua área / HelpPage (eca).

Atualmente, uso o seguinte código para fazer isso:

`` `c #
Private static readonly MethodInfo CreateMethodInfo =
GetMethod (() => SpecimenFactory.Create(novo acessório ()))
.GetGenericMethodDefinition ();

objeto estático público Criar (tipo de tipo)
{
var fixture = new Fixture ();
índice interno = 1;
fixture.Register (() => "texto de exemplo" + índice ++);

return CreateMethodInfo.MakeGenericMethod(type).Invoke(null, new object[] { fixture });

}

Private static MethodInfo GetMethod (Expression> methodCall) =>
((MethodCallExpression) methodCall.Body) .Method;
`` `

Como não sei a mensagem exata em tempo de compilação, não posso chamar o método Fixture.Create<T>() do Autofixture. Como mostra o código acima, a maneira como resolvi isso atualmente é invocando este método Create<T> genérico usando reflexão.

Existe uma maneira mais simples de atingir meu objetivo e, se não, poderia um método Create(Type) não genérico ser adicionado à biblioteca?

Comentários muito úteis

Essa solução funcionaria?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

Todos 2 comentários

Essa solução funcionaria?

c# var specimen = new SpecimenContext(fixture).Resolve(type);

Legal! Isso resolve o problema! Obrigado.

Esta página foi útil?
0 / 5 - 0 avaliações