I have a generic service like below:
public interface ISyncedDataService<T> where T : BaseDBModel
{
Task<int> SaveItem(T item);
Task<int> InsertAllItems(List<T> items);
Task<List<T>> GetItems();
Task<T> GetItem(long primaryKey);
Task<int> DeleteItem(T item);
}
And have a bunch of classes T1, T2, T3, T4.. T20 which are inherited from BaseDBModel.
I am using Autofac for invoking services like below:
using var scope = App.Container.BeginLifetimeScope(); //Container is Autofac.IContainer
var items = await scope.Resolve<ISyncedDataService<T1>>().GetItems(); //T1 inherits BaseDBModel
How do I invoke the GetItems() if the type T1...T20 is known only on run time? Currently I am using an if-else chain to make it simple and fast. But curios on how I can do that dynamically (reflections?)
Edit: When using reflections, the challenge is when trying to dynamically get the MethodInfo for an extension method which is also a generic method.