Что я могу использовать (может быть, шаблон проектирования?), Чтобы избежать этого нарушения провайдером? с помощью Asp.net базовая страница

#c# #asp.net #design-patterns

#c# #asp.net #шаблоны проектирования

Вопрос:

У меня есть класс:

 class BasePage
{
   protected abstract Company ReferencedCompany
   {
      get;
   }
}
 

И asp.net страница, которая наследуется от него. Однако я не хочу / не должен реализовывать это свойство в наследующем классе. И я действительно не хочу оставлять ее пустой. Есть ли шаблон проектирования, который я могу использовать, чтобы избежать этого явного нарушения принципа разделения интерфейсов (ISP)?

Кроме того, я не могу изменить всю кодовую базу, поэтому я искал что-то, что я мог бы добавить. Возможно, шаблон адаптера?

Ответ №1:

У вас должно быть больше типов. Если на какой-то странице нет a ReferencedCompany , то эта страница не является базовой страницей. Смотрите пример ниже:

 class BasePage
{
   //something common to ALL pages   
}

class CompanyPage : BasePage
{
   protected abstract Company ReferencedCompany
   {
      get;
   }
}

class EmployeePage : BasePage
{
   protected abstract IEnumerable<Employee> AllEmployees
   {
      get;
   }
}
 

Если вы используете это с ASP.NET WebForms рассмотрите возможность использования шаблона MVP, он четко разделяет модель представления и презентер.