Generic repository with UoW and simple injector
Putting aside the fact that EF already provides both a UoW and Generic Repository, there's still a huge flaw with your UnitOfWork. It disposes a resource it doesn't own. You pass the context in as a constructor arg, store it as a member, and then code analysis yelled at you for not implementing IDisposable, so you disposed of it. The problem is, the UoW has no way of knowing that it's supposed to dispose of the context, because it was injected into the class. 

In all the years I've been working with .Net, not once have I actually needed to implement IDisposable. Every single time that I thought I needed to, I didn't. I just needed to keep the lifetime of the IDisposable short and contained within a using block. That's possible if you abandon this folly and implement a domain specific service instead. 

public class EFWidgetStore : IWidgetStore
{
    private readonly Func&lt;DbContext&gt; GetContext;
    public EFWidgetStore(Func&lt;DbContext&gt; contextFactory)
    {
        GetContext = contextFactory;
    }

    public Widget Get(int id)
    {
        using (context = GetContext())
        {
            //... get it
        }
    }

    public Widget Get(string name)
    {
         //...
    }




Next up, you've broken Liskov's substitution principle, which is common for these kinds of implementations. 


public Task&lt;PagedResult&lt;T&gt;&gt; Find(Expression&lt;Func&lt;T, bool&gt;&gt; predicate, int pageNumber, int pageSize)
{
    throw new NotImplementedException();
}



Although, let's be honest. When will you ever treat a specific repository as an instance of the base class anyway... You've introduced a world of hurt on yourself for no gain what so ever. Please don't do this.