Как я получаю имя класса aspx страницы из пользовательского элемента управления?

Внедрение зависимости передает зависимость другому объекты или платформа (инжектор зависимости).

Внедрение зависимости делает тестирование легче. Инжекция может быть сделана до [1 124] конструктор .

SomeClass() имеет его конструктора как следующее:

public SomeClass() {
    myObject = Factory.getObject();
}

проблема : Если myObject включает сложные задачи, такие как доступ к диску или доступ к сети, это твердо , чтобы сделать модульный тест на SomeClass(). Программисты должны дразнить myObject, и мог бы прерывание вызов фабрики.

Альтернативное решение :

  • Передача myObject в как аргумент конструктору
public SomeClass (MyClass myObject) {
    this.myObject = myObject;
}

myObject может быть передана непосредственно, который делает тестирование легче.

  • Одна общая альтернатива определяет пустой конструктор . Внедрение зависимости может быть сделано через методы set. (h/t @MikeVella).
  • Martin Fowler документы третья альтернатива (h/t @MarcDix), где классы явно реализуют интерфейс для введенного желания программистов зависимостей.

более трудно изолировать компоненты в поблочном тестировании без внедрения зависимости.

В 2013, когда я записал этот ответ, это было главной темой на Google Testing Blog . Это остается самым большим преимуществом для меня, поскольку программистам не всегда нужна дополнительная гибкость при их разработке во время выполнения (например, для сервисного локатора или подобных шаблонов). Программисты часто должны изолировать классы во время тестирования.

6
задан Middletone 13 August 2009 в 00:12
поделиться

2 ответа

this.Page.GetType().AssemblyQualifiedName
9
ответ дан 8 December 2019 в 04:54
поделиться

Я не могу придумать вариант использования, но попробуйте:

string name = Page.GetType().Name;
5
ответ дан 8 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: