Я должен использовать вложенные классы в этом случае?

Пожалуйста, убедитесь, что приложение зарегистрировано в AD-Office Office 365 AD, иначе вы не сможете обнаружить и использовать службы Office 365.

Шаг # 1 Загрузите образец проекта AspNetMvc-with-O365 .zip .

Шаг # 2 Зарегистрируйте приложение под AD Office Office 365 AD, объявите Office 365 Exchange Online> Прочитайте права на почту пользователя и установите REPLY URL как « http: / / локальный: 2659 / ».

Шаг # 3 В файле web.config скопируйте ClientId, TenantId и Client Secret с портала Azure AD.

Шаг # 4 Запустите проект в Visual Studio и войдите в систему с помощью учетной записи Azure AD

Ожидаемый результат должен быть следующим:

Вы также можете нажать кнопку «Очистить базу данных кеша», если у вас есть проблемы с токеном.

50
задан Bruce 2 September 2012 в 21:53
поделиться

10 ответов

Я немного отказался бы использовать вложенные классы здесь. Что, если Вы создали абстрактный базовый класс для "мультимедийного драйвера" для обработки материала бэкенда (рабочая лошадь) и отдельный класс для работы фронтенда? Класс фронтенда мог взять указатель/ссылку на реализованный класс драйвера (для соответствующего типа среды и ситуации) и выполнить абстрактные операции на структуре рабочей лошади.

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

я сослался бы на что-то как QTextDocument в QT. Вы предоставляете прямой интерфейс обработке данных без операционной системы, но передаете полномочия объекту как QTextEdit, чтобы сделать управление.

27
ответ дан barracel 7 November 2019 в 11:05
поделиться

Вы использовали бы вложенный класс для создания (маленького) класса помощника, это требуется, чтобы реализовывать основной класс. Или например, для определения интерфейса (класс с абстрактными методами).

В этом случае, основной недостаток вложенных классов - то, что это делает его тяжелее, чтобы снова использовать их. Возможно, требуется использовать класс VideoDecoder в другом проекте. При создании его вложенным классом VideoPlayer Вы не можете сделать этого изящным способом.

Вместо этого вставляет отдельные .h/.cpp файлы других классов, которые можно тогда использовать в классе VideoPlayer. Клиент VideoPlayer теперь только должен включать файл, который объявляет VideoPlayer, и все еще не должен знать о том, как Вы реализовали его.

9
ответ дан Frederik Slijkerman 7 November 2019 в 11:05
поделиться

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

, Если это существует только в целях помощи другому классу тогда, я обычно делаю его вложенным классом. Существует целая загрузка протестов к этому, некоторые из которых кажутся противоречащими, но все это снижается для испытания и инстинктивное чувство.

5
ответ дан graham.reeds 7 November 2019 в 11:05
поделиться

походит на случай, где Вы могли использовать стратегическая модель

4
ответ дан DShook 7 November 2019 в 11:05
поделиться

Иногда уместно скрыть классы реализации от пользователя - в этих случаях, лучше поместить их в foo_internal.h, чем в общедоступном определении класса. Тем путем читатели Вашего foo.h не будут видеть то, что Вы предпочли бы, чтобы они не были обеспокоены с, но Вы можете все еще тесты записи против каждой из конкретных реализаций Вашего интерфейса.

4
ответ дан 0124816 7 November 2019 в 11:05
поделиться

Мы поражаем проблему с полустарым компилятором C++ Sun и видимостью вложенных классов который поведение, измененное в стандарте. Это не причина не сделать Ваш вложенный класс, конечно, просто что-то, чтобы знать, если Вы планируете компиляцию Вашего программного обеспечения на большом количестве платформ включая старые компиляторы.

4
ответ дан yoozer8 7 November 2019 в 11:05
поделиться

Ну, если Вы будете использовать указатели на свои классы рабочей лошади в Вашем Интерфейсном классе и не представите их как параметры или возвратите типы в Ваших методах интерфейса, Вы не должны будете включать определения для тех лошадей работы в Вашем интерфейсном заголовочном файле (Вы просто передаете, объявляют их вместо этого). Тем путем пользователи Вашего интерфейса не должны будут знать о классах в фоновом режиме.

Вы определенно не должны вкладывать классы для этого. На самом деле отдельные файлы класса на самом деле сделают Ваш код намного более читаемым и легче справиться, когда Ваш проект растет. также поможет Вам позже, если необходимо разделить на подклассы (скажите для различного содержания/типов кодека).

Вот больше информации о шаблон PIMPL (разделите 3.1.1).

4
ответ дан Carl 7 November 2019 в 11:05
поделиться

Необходимо использовать внутренний класс только, когда Вы не можете реализовать его как отдельный класс с помощью открытого интерфейса потенциального внешнего класса. Внутренние классы увеличивают размер, сложность и ответственность класса, таким образом, они должны использоваться экономно.

Ваш класс кодера/декодера походит на него лучшие соответствия Стратегическая модель

2
ответ дан luke 7 November 2019 в 11:05
поделиться

Одна причина избежать вложенных классов состоит в том, если Вы когда-нибудь намереваетесь обернуть код с большим глотком ( http://www.swig.org ) для использования с другими языками. Большой глоток в настоящее время имеет проблемы с вложенными классами, таким образом взаимодействуя через интерфейс с библиотеками, которые представляют любые вложенные классы, становится реальной болью.

1
ответ дан 7 November 2019 в 11:05
поделиться

Другая вещь иметь в виду состоит в том, предполагаете ли Вы когда-нибудь различные реализации своих функций работы (такие как декодирование и кодирование). В этом случае Вы определенно хотели бы абстрактный базовый класс с различными реальными классами, которые реализуют функции. Действительно не было бы уместно вложить отдельный подкласс для каждого типа реализации.

1
ответ дан Michael Mathews 7 November 2019 в 11:05
поделиться
Другие вопросы по тегам:

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