For this, I would actually suggest using reflection. In the constructor of your DbContext, you can set a property to the function pointer:
method = this.GetType().GetMethod("Set", new Type[0]).MakeGenericMethod(typeof(UserImplementation));
You can then invoke this using:
method.Invoke(this, new object[0]);
And this should return an object of type DbSet<UserImplementation>
which the .Cast<>() method can then be invoked on.