Я хочу зарегистрировать универсальный класс (этот класс необходим, потому что я хочу реализовать шаблоны: репозиторий и единицу работы) в ConfigureServices, чтобы получить внедрение зависимостей.Но я не знаю как.
Вот мой интерфейс:
public interface IBaseRepository<TEntity> where TEntity : class
{
void Add(TEntity obj);
TEntity GetById(int id);
IEnumerable<TEntity> GetAll();
void Update(TEntity obj);
void Remove(TEntity obj);
void Dispose();
}
Его реализация:
public class BaseRepository<TEntity> : IDisposable, IBaseRepository<TEntity> where TEntity : class
{
protected CeasaContext context;
public BaseRepository(CeasaContext _context)
{
context = _context;
}
/*other methods*/
}
И что я пытаюсь сделать:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
var connection = @"Data Source=whatever;Initial Catalog=Ceasa;Persist Security Info=True;User ID=sa;Password=xxx;MultipleActiveResultSets=True;";
services.AddDbContext<CeasaContext>(options => options.UseSqlServer(connection));
services.AddTransient<BaseRepository, IBaseRepository>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}