Dependencyinjection: рдЕрдкреВрд░реНрдг рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдордИ 2016  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aspnet/DependencyInjection

RC2 рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдЯрдЗрдиреНрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдмрд┐рдЯреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдерд╛ (ClosedServicesPreferredOverOpenGenericServices)ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдмрджрд▓ рдЧрдИ рдереА рд╡рд╣ рдереА рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдиреЗрд░рд┐рдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреНрдпрдХреНрд▓реИрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдореИрдВ рдЬрд▓реНрджреА рд╣реА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐ AnotherClass рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдирд┐рд░реНрднрд░рддрд╛ (IFakeService) рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ рд╣реИред рдореИрдВ рд╕рдВрдкрддреНрддрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдвреАрд▓реА рд░рдгрдиреАрддрд┐ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрднрд░рддрд╛ рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИ рддреЛ рдЖрдИрдПрдордПрдЪрдУ рдХреЛ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬреЛ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ / resolvable рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рдХреАрдЬрд┐рдП рдХрд┐ рдПрдХ рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдореЗрд░рд╛ рдХреНрдпрд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд╣реИред

 public void ShouldHandleMissingPropertyDepenency()
{
    // Arrange 
    var collection = new ServiceCollection();
    collection.AddTransient(typeof(FakeService), typeof(FakeService));
    var provider = CreateServiceProvider(collection);

    // Act 
    var service = provider.GetService<FakeService>();

    // Assert
    Assert.IsType<FakeService>(service);
    Assert.Null(service.Value);                        
}

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реИ (рдПрдХ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реЗрд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХрднреА рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдерд╛ред рдЕрдЧрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

public void ShouldThrowExceptionForIncompletePropertyDependency()
{           
    // Arrange
    var collection = new ServiceCollection();
    collection.AddTransient(typeof(FakeService));
    collection.AddTransient(typeof(AnotherClass));
    var provider = CreateServiceProvider(collection);

    // THIS SHOULD FAIL 
    var service = provider.GetService<FakeService>();

}

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрднрд░рддрд╛ (рдПрдХ рдФрд░ рдХреНрд▓реЗрдорд╛рд╕) рдкрдВрдЬреАрдХреГрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрд╡ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдХреНрд▓реИрдХреНрд╕реЗрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдкрдВрдЬреАрдХреГрдд рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдпрд╣ (рдЦрддрд░рдирд╛рдХ) рд╡реНрдпрд╡рд╣рд╛рд░ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдкрд░реАрдХреНрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

@ рд╢реЗрдпрд╢рд░ рдпрд╣рд╛рдВ рдкрд░ рд╣рд╛рдЬрд┐рд░ рд╣реИ: рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рдЕрдиреБрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Microsoft рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдРрд╕реЗ рдФрд░ рднреА рдкрд░реАрдХреНрд╖рдг рд╣реЛрдВрдЧреЗ рдЬреЛ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред 41 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдЯреАрдХ рд╕реБрдкрд░рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред

рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, v1 рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдЯ-рдЗрди рдбреАрдЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдлреАрдЪрд░ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ - рдирд┐рд░реНрдорд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рд░ рдЬреЛрдбрд╝рд╛ рдлреАрдЪрд░ рд╣рд░ рдореМрдЬреВрджрд╛ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рднреА рд╕реБрдзрд╛рд░ рдФрд░ рдирд╡реАрдирддрд╛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ; рд╣рд░ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ @ploeh , @danielmarbach рдФрд░ рдЦреБрдж рд▓реЛрдЧ Microsoft рдХреЛ рдЙрдирдХреЗ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЧрд╛рд╣ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрд╕рдлрд▓рддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП AnotherClass рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрдзреВрд░рд╛ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдирд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред @seesharper рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИред рдпрджрд┐ рдЖрдк рдирд┐рд╣рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╕рдВрджрд┐рдЧреНрдз рд╣реИ), рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдкрдВрдЬреАрдХреГрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рдВ, рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди @pranavkm рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдЬрд╛рдирдмреВрдЭрдХрд░

рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдмрдЬрд╛рдп рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рджреВрд╕рд░реЗ рдЗрд░рд╛рджреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреАред рдпрд╣ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрд░рд╕реА 2 рд╕рдордп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╕рдордп рд╣реИ?

рдЖрд░рдЯреАрдПрдо рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдЬреЛ рд╕рднреА рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рднреА рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдз рдореЗрдВ рдПрдХ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
https://github.com/aspnet/D dependencyInjection/commit/6a7bdda613c0cc526775b38532dedbffd2d2d6ac

рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдз рдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд░рдЬрд┐рд╕реНрдЯрд░ IFakeService рдХрд┐ AnotherClass рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдкреВрд░реНрдг рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЧреБрдгреЛрдВ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЕрдореВрд░реНрдд рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ASP.NET Core, Entity Framework рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рд░реНрднрд░ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреВрд╕рд░реЗ рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХреЗрдВ рдЬреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд░рдирд╛ред рдЬрд┐рд╕ рдорд┐рдирдЯ рдЖрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдбреЙрдкреНрдЯрд░ рд╕реЗ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рдЯреВрдЯрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреИрдХреЗрдЬ рдореЗрдВ 41 рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдЗрди рдкрд░рд┐рдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣рд░ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╣рд┐рд╕рд╛рдм рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓рд╛рдЗрдЯрдЗрдиреНрдЬреЗрдХреНрдЯ, рдЬреЛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдбреАрдЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдХреЛ 500 рд╕реЗ рдЕрдзрд┐рдХ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдорд┐рд▓реЗ рд╣реИрдВред

рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкреАрдЖрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкреАрдЖрд░ рдореЗрдВ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рдЕрдзреВрд░реЗ рдЧреНрд░рд╛рдл рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗред

рдкреБрдирд╢реНрдЪ: RC2 рд░рд┐рд▓реАрдЬ рдкрд░ рдмрдзрд╛рдИ :)

рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ

@ рд╢реЗрдпрд╢рд░ рдпрд╣рд╛рдВ рдкрд░ рд╣рд╛рдЬрд┐рд░ рд╣реИ: рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рдЕрдиреБрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Microsoft рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдРрд╕реЗ рдФрд░ рднреА рдкрд░реАрдХреНрд╖рдг рд╣реЛрдВрдЧреЗ рдЬреЛ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред 41 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдПрдбрд╛рдкреНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдВрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдЯреАрдХ рд╕реБрдкрд░рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред

рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, v1 рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдЯ-рдЗрди рдбреАрдЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдлреАрдЪрд░ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ - рдирд┐рд░реНрдорд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдиреБрдмрдВрдз рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рд░ рдЬреЛрдбрд╝рд╛ рдлреАрдЪрд░ рд╣рд░ рдореМрдЬреВрджрд╛ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рднреА рд╕реБрдзрд╛рд░ рдФрд░ рдирд╡реАрдирддрд╛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ; рд╣рд░ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ @ploeh , @danielmarbach рдФрд░ рдЦреБрдж рд▓реЛрдЧ Microsoft рдХреЛ рдЙрдирдХреЗ рдПрдбреЙрдкреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЧрд╛рд╣ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ рд╕реЗрд╢рдкрд░ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдкрд░ рдЖрдкрдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рд╣реЛрдВрдЧреЗред

рд╕реНрд╡рдЧрдд рдХрдерди рдХреЗ рд░реВрдк рдореЗрдВ:

рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ Microsoft рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рдерд╛ред рдЕрдВрддрддрдГ, рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдордиреЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдЖрдо рддреМрд░ рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрднрд╡ рджреЗрдЦрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА DI рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрдВрдд-рд╕рднреА, рд╕рднреА-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, _and рднреА рдирд╣реАрдВ-рдЕрдВрдд-рд╕рднреА, Be-all рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрдирд╛ рд╣реИред рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рдХреЛрдб рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдХреЛрдИ рднреА "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдХреЛрдб рдЕрдВрддрддрдГ рдХрд┐рд╕реА рднреА DI рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд╣ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдРрд╕реЗ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдВ рдЕрдиреБрдмрдВрдзреЛрдВ рдФрд░ / рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рд╡рд┐рднрд┐рдиреНрди рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЖрдЗрдП рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд╡рд░реЗрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

GrabYourPitchforks picture GrabYourPitchforks  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

divega picture divega  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ZhiqiangTao picture ZhiqiangTao  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TimRowe picture TimRowe  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ