Mam dwie podobne metody, które w zasadzie robi to samo tylko z różnymi obiektami. Jaki jest najlepszy sposób, aby w miarę możliwości zastosować ogólną metodę?Jak stworzyć ogólną metodę z dwóch podobnych, ale różnych metod?
dwóch obiektów:
public class StoreObject {
int Key;
string Address;
string Country;
int Latitude;
int Longitude;
}
public class ProjectObject {
int ProjectKey;
string Address;
string Description;
}
dwóch metod, że potencjalnie chcą przekształcić ogólna:
public StoreObject GetStoreByKey(int key)
{
using (DBEntities dbe = new DBEntities())
{
StoreObject so = new StoreObject();
var storeObject = (from s in dbe.StoreTables
where s.Key == key
select s).First();
so.Key = storeObject.key;
so.Address = storeObject.address;
so.Country = storeObject.country;
so.Latitude = storeObject.latitude;
so.Longitude = storeObject.longitude;
return so;
}
}
public ProjectObject GetProjectByKey(int projectKey)
{
using (DBEntities dbe = new DBEntities())
{
ProjectObject po = new ProjectObject();
var projectObject = (from p in dbe.ProjectTables
where p.ProjectKey == projectKey
select p).First();
po.Key = projectObject.p_key;
po.Address = projectObject.p_address;
po.Description = projectObject.p_description;
return po;
}
}
muszę zauważyć, że:
- nie mam kontroli nad sposób nazywania nazw pól (np. p_description).
- Na przykład StoreTable w DB może mieć inne właściwości (takie jak telefon, kod pocztowy, itp.), Ale interesuje mnie tylko pokazanie tego, co pokazałem w kodzie.
- To samo dotyczy ProjectTable.
Metody te nie są podobne. Niemal każda linia jest inna. Można wprowadzić wyrażenie jako klauzulę where, ale to tylko sprawi, że rzeczy będą bardziej złożone. Każda z tych metod dokładnie wie, jak traktować obiekt, którym się zajmują. Wydaje mi się, że jest tak abstrakcyjny, jak to tylko możliwe. –
No cóż, będę musiał twierdzić, że są podobieństwa i chociaż zgadzam się, że jest już abstrahowany, pomyślałem, że spróbuję zapytać, na wypadek, gdyby inni ludzie wpadli na pomysł, aby uczynić go jeszcze bardziej. – kei