Autofixture: Ajouter une méthode Create(Type) non générique

Créé le 19 nov. 2015  ·  2Commentaires  ·  Source: AutoFixture/AutoFixture

J'utilise (ab) Autofixture pour générer des exemples de documentation pour une API Web. Les messages (commandes et requêtes) qu'Autofixture créera pour moi sont sérialisés en JSON et font partie de la documentation. Cela fonctionne vraiment très bien, et cela prend quelques lignes de code, par rapport aux centaines de lignes de code laid que le modèle VS pour l'API Web génère dans sa zone /HelpPage (beurk).

Actuellement, j'utilise le code suivant pour y parvenir :

``` c#
privé statique en lecture seule MethodInfo CreateMethodInfo =
GetMethod(() => SpecimenFactory.Create(nouveau luminaire ()))
.GetGenericMethodDefinition();

objet statique public Créer (type de type)
{
var fixture = new Fixture();
indice entier = 1 ;
fixture.Register(() => "sample text " + index++);

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

}

Private static MethodInfo GetMethod(Expression> methodAppel) =>
((MethodCallExpression)methodCall.Body).Méthode ;
```

Comme je ne connais pas le message exact au moment de la compilation, je ne peux pas appeler la méthode Fixture.Create<T>() Autofixture. Comme le montre le code ci-dessus, la façon dont j'ai actuellement résolu ce problème consiste à invoquer cette méthode générique Create<T> aide de la réflexion.

Existe-t-il un moyen plus simple d'atteindre mon objectif, et sinon, une méthode Create(Type) non générique pourrait-elle être ajoutée à la bibliothèque ?

Commentaire le plus utile

Cette solution fonctionnerait-elle ?

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

Tous les 2 commentaires

Cette solution fonctionnerait-elle ?

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

Frais! ça fait l'affaire ! Merci.

Cette page vous a été utile?
0 / 5 - 0 notes