во-первых, он не наследуется дважды, у вас есть две реализации одного и того же класса, одна является generi c, а другая не является generi c.
вы не предоставили нам внутренний код, так что вот пример, скажем, у вас есть что-то вроде этого ..
public class MyPageBase<T> : WebViewPage<T>
{
//The exact same properties
private DbContext db;
public MyPageBase()
{
db = new MPContext();
}
public List<T> Fill()
{
return db.Set<T>().ToList();
}
public T FillBy(object id)
{
return db.Set<T>().Find(id);
}
}
Так зачем вам дженери c page? если есть некоторые задачи, которые являются общими для всех страниц, вы просто делаете обобщенный c метод для выполнения этой работы. ниже приведен пример использования. скажем, у вас есть ПОЛЬЗОВАТЕЛИ И ЗАКАЗЫ таблиц в вашем курсе dbcontext
public class UsersPage<USERS>:MyPageBase<USERS>{
public void Index()
{
var filledData = Fill<USERS>();
}
}
public class UsersPage<ORDERS >:MyPageBase<ORDERS >{
public void Index()
{
var filledData = Fill<ORDERS>();
}
}
, вы можете легко сделать это с помощью
var filledData = db.USERS.ToList();
, и вы можете Спросите, почему вся эта суета? реализовать обобщенные c методы, но иногда случается, что более сложный сценарий ios оказывается более сложным, чем выборка всех записей и c.
скажем, у вас есть более 20 таблиц, и вы решили заполнить только 5 записей из каждой таблицы. без обычной реализации c вы должны go на 20+ страницах и изменить код
с
var filledData = db.TABLE_TYPE.ToList();
на
var filledData = db.TABLE_TYPE.Take(5).ToList()
с помощью дженериков вы можете просто исправить это в приведенном ниже методе, вы можете даже сделать его параметри c
public List<T> Fill()
{
return db.Set<T>().Take(5).ToList();
}
и вы в безопасности ..
сейчас Если бы вы использовали не generi c реализация MyPageBase
все эти вещи, что вам нужно было делать, вы должны были писать их снова и снова.
Конечно, написание все большего и большего количества кода дает вам опыт, но через некоторое время при работе в программе, особенно в крупном масштабе, вы хотите сделать вещи простыми, понятными и понятными, насколько это возможно ..
I Прошу прощения за мой плохой английский sh,
Надеюсь, я был ясен, и это помогло вам!