Ядро asp.net и пример внедрения зависимостей как насчет классов poco как возвращаемых типов - PullRequest
0 голосов
/ 10 июня 2018

Просмотр раздела DI из документации здесьhttps://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.1

Итак, используя приведенный ниже пример, что если в моем репозитории я захочу вернуть объект POCO некоторого вида.Разве это не должно быть зарегистрировано и в configureservices?

using System.Collections.Generic;
using DependencyInjectionSample.Models;

    namespace DependencyInjectionSample.Interfaces
    {
        public interface ICharacterRepository
        {
            IEnumerable<Character> ListAll();
            void Add(Character character);
        }
    }

    using System.Collections.Generic;
    using System.Linq;
    using DependencyInjectionSample.Interfaces;

    namespace DependencyInjectionSample.Models
    {
        public class CharacterRepository : ICharacterRepository
        {
            private readonly ApplicationDbContext _dbContext;

            public CharacterRepository(ApplicationDbContext dbContext)
            {
                _dbContext = dbContext;
            }

            public IEnumerable<Character> ListAll()
            {
                return _dbContext.Characters.AsEnumerable();
            }

            public void Add(Character character)
            {
                _dbContext.Characters.Add(character);
                _dbContext.SaveChanges();
            }
        }
    }


    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseInMemoryDatabase()
        );

        // Add framework services.
        services.AddMvc();

        // Register application services.
        services.AddScoped<ICharacterRepository, CharacterRepository>();
        services.AddTransient<IOperationTransient, Operation>();
        services.AddScoped<IOperationScoped, Operation>();
        services.AddSingleton<IOperationSingleton, Operation>();
        services.AddSingleton<IOperationSingletonInstance>(new Operation(Guid.Empty));
        services.AddTransient<OperationService, OperationService>();
    }
...