Dobrý den, chtěl bych požádat o radu. Mám rozsáhlou databázi ke které přistupuji pomocí EF a rád bych vytvořil třídu ve které bych měl z této databáze uloženou tabulku. Třída by obsahovala kolekci ObservableCollection a měla metody pro přidání ,editaci a mazání záznamu z databáze. Protože je každá tabulka jiného typu tak bych chtěl v mojí třídě definovat datový typ kolekce dynamicky.
//definice tridy
public class ClassTable<T> where T: class
{
private ObservableCollection<T> collection;
public ClassTable(DbSet<T> entity,DbContext context)
{
collection = new ObservableCollection<T>();
this.entity = entity;
this.context = context;
entity.ToList().ForEach(p => collection.Add(p));
}
public int GetNewId<T>()
{
if (typeof(T) == typeof(vehicle))
{
return collection.Max(p => p.id) + 1;
}
if (typeof(T) == typeof(......))
{
return collection.Max(p => p.id) + 1;
}
}
}
// pouziti této tridy
public void Init()
{
ClassTable<vehicle> table = new ClassTable<vehicle>(databazeEntities.type, databazeEntities);
int newId = table.GetNewId<vehicle>()
}
v definici třídy kde je "return collection.Max(p => p.id) + 1" to hlásí chybu že v T není definice pro "id" tomu rozumím ani nemůže, ale chtěl bych zeptat zda je nějaká možnost v kódu říct že je tato kolekce typu <vehicle> a tím by s tím šlo pracovat?? Nebo případně jak se řeší práce s proměnnýma které jsou definované T. V databázi mám hodně tabulek a chtěl jsem udělat obecnou třídu která by s nimi uměla základní operace. Děkuji Tom
|