ASP.NET Design Question - Factory vs Динамический выбор кода позади (если это возможно) - PullRequest
3 голосов
/ 28 сентября 2010

У меня есть общий редактор на странице ASP.NET для редактирования значений поиска для разных таблиц базы данных.

В коде используется базовый класс, который обрабатывает 99% работ по всем поискам в системе.

Класс C # передается в базовый класс из кода, указанного ниже.

    public class LookupPageBase : System.Web.UI.Page
    {
         protected IEditableLookupManager LookupManager
         {
          get
          {
             return this.lookupManager;
            }
         set
         {
             this.lookupManager = value;
          }
        }
     }

public partial class LookupsEditor : LookupPageBase
{
   this.LookupManager = new ConcreteManagerClass();
}

Различный класс C # передается в свойство менеджера поиска для каждого поиска. Я мог бы использовать шаблон фабрики, чтобы избежать большого, если тогда еще в коде позади. Однако мне было интересно, можно ли добиться того же эффекта с помощью подкласса кода, стоящего за , например.

    public partial class LookupsEditorSubClass : LookupsEditor
{
   public LookupsEditorSubClass() {
        base.LookupManager = new ConcreteManagerClass();
   }
}

Вопросы: 1) Это потребовало бы, чтобы код позади класса был установлен динамически ..... Может ли код позади класса быть установлен динамически и возможно ли даже наследовать от частичного класса? 2) Если я использую фабрику вместо этого, нужно ли мне просто принимать большое, если еще?

1 Ответ

1 голос
/ 28 сентября 2010

Есть ли шанс, что вы могли бы использовать MVC для этого? Я вижу, что вы включили .NET 3.5 в теги, поэтому нет реальной технической причины, по которой вы не должны этого делать.

Причина, по которой я спрашиваю, заключается в том, что эту проблему легко решить с помощью MVC. Только модель изменится между вашими разными случаями.

Обновление : После ваших комментариев, я думаю, что Фабричный подход, вероятно, лучше для вас . Бездействие с классами codebehind не принесло мне ничего, кроме неприятностей в прошлом. Вместо того, чтобы изменять класс codebehind, почему бы вам не использовать usercontrols для редактирования. Затем вы можете загрузить другой пользовательский контроль в зависимости от конкретных требований объекта, который вы редактируете. Это может быть предоставлено фабрикой.

...