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
.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
((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?
Essa solução funcionaria?
c#
var specimen = new SpecimenContext(fixture).Resolve(type);
Legal! Isso resolve o problema! Obrigado.
Comentários muito úteis
Essa solução funcionaria?
c# var specimen = new SpecimenContext(fixture).Resolve(type);