I have a Method which accepts a Generic T class
public void CreateTables<T>()
{
string name = typeof(T).Name;
var fields = typeof(T).GetProperties().Select(t => new { key =
t.Name.ToLower(CultureInfo.InvariantCulture), value =
SqLiteUtility.GetSQLiteTypeString(t.PropertyType) })
.ToDictionary(t => t.key, t =>
t.value);
CreateTable(name, fields);
}
and
public void PushData<T>() where T : EntityData
{
var data = _context.Set<T>().Where(p => p.Deleted == false).ToList();
}
I have more than 50 types for which this method needs to be called Like this
CreateTables<Class1>();
PushData<Class1>();
Although I can do like this, but i prefer to create maybe array of Types and use for loop to call this method
Something like this
Type[] types=new Types[]{typeof(Class1),typeof(Class2)}
foreach(var type in types)
{
//call create table method
CreateTables<type>(); - - this doesnt work as "type" is a variable
used as a type
}
Is there a way around this? that can also save me a lot of code and refactor things effectively?
EDIT1:
From the answers , indeed Parameters like CreateTables(Type T) can work, however for the second method above, is there also a possibility?
In the second it's important that T is mentioned of type EntityData as the code in the method depends on it.