рдореИрдВ (рдПрдмреА) рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдЙрджрд╛рд╣рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╕рдВрджреЗрд╢ (рдЖрджреЗрд╢ рдФрд░ рдкреНрд░рд╢реНрди) рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдмрдирд╛рдПрдВрдЧреЗ, рд╡реЗ JSON рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдП рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрджрд╕реВрд░рдд рдХреЛрдб рдХреА рд╕реИрдХрдбрд╝реЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдкрдиреЗ/рд╣реЗрд▓реНрдкрдкреЗрдЬ рдХреНрд╖реЗрддреНрд░ (рдпрдХ) рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
``` рд╕реА#
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП MethodInfo CreateMethodInfo =
GetMethod (() => рдирдореВрдирд╛ рдлреИрдХреНрдЯрд░реАред рдмрдирд╛рдПрдВ
.GetGenericMethodDefinition ();
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдБ (рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░)
{
рд╡рд░ рд╕реНрдерд┐рд░рддрд╛ = рдирдИ рд╕реНрдерд┐рд░рддрд╛ ();
рдЗрдВрдЯ рдЗрдВрдбреЗрдХреНрд╕ = 1;
рдлрд┐рдХреНрд╕реНрдЪрд░ред рд░рдЬрд┐рд╕реНрдЯрд░ (() => "рдирдореВрдирд╛ рдкрд╛рда" + рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ ++);
return CreateMethodInfo.MakeGenericMethod(type).Invoke(null, new object[] { fixture });
}
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ MethodInfo GetMethod (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐)
((MethodCallExpression)methodCall.Body)редрд╡рд┐рдзрд┐;
```
рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рдЯреАрдХ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдСрдЯреЛрдлрд┐рдХреНрд╕реНрдЪрд░ рдХреА Fixture.Create<T>()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп Create<T>
рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдЧреИрд░-рд╕рд╛рдорд╛рдиреНрдп Create(Type)
рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИ?
рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛?
c#
var specimen = new SpecimenContext(fixture).Resolve(type);
рдардВрдбрд╛! рдпрд╣реА рдЪрд╛рд▓ рд╣реИ! рдзрдиреНрдпрд╡рд╛рджред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░реЗрдЧрд╛?
c# var specimen = new SpecimenContext(fixture).Resolve(type);