Это не поддерживается, но я понимаю, зачем это нужно. Мы не можем передать httpContext промежуточному программному обеспечению в качестве аргумента, потому что мы хотим обеспечить совместимость стандартного промежуточного программного обеспечения Express. Это означает, что единственный вариант - сделать что-то наподобие того, что вы сделали, но в идеале мы должны инкапсулировать это с помощью некоторого помощника.
Нам нужно реализовать что-то вроде следующей функции getHttpContext
:
import * as express from "express";
import { getHttpContext } from "inversify-express-utils";
function authMiddlewareFactory() {
return (config: { role: string }) => {
return (
req: express.Request,
res: express.Response,
next: express.NextFunction
): void => {
const httpContext = getHttpContext(req);
const principal: interfaces.Principal = httpContext.user;
if (!principal.isInRole(config.role)) {
res.sendStatus(HttpStatus.UNAUTHORIZED);
return;
}
next();
};
};
}
Пока это не реализовано, я не вижу никаких проблем с вашей реализацией, кроме утечки информации внутренних компонентов. 114]
Привязка WPF, хотя хороший слишком сложна, она сочетает функции XPath с нормальной привязкой .NET и является супер гибкой, но очень трудной отладить, когда это становится сложным, и также очень многоречивым - в скольких IValueConverter нуждается одна часть кода?
DependencyObject от WPF является блестящим, хотя - свойство, которое управляет памятью разумно, создало в уведомлении об изменениях - это - хорошее начало для привязки и свойств в целом.
Привязка данных в Какао и Objective C очень жива и здорова. Часть этого - то, потому что она создала сверх кодирования значения ключа и наблюдения значения ключа, которые очень серьезны и хорошо продумали функции в Какао. Это также хорошо интегрируется в большом количестве новых технологий, которые Apple разрабатывает, такие как Базовые Данные.
Другими платформами, которые поддерживают привязку данных, является Adobe Flex и WPF Microsoft.
Привязка данных и модели UI в WPF являются не чем иным как удивительный. Можно связать с методами объектов, связать асинхронно, связать односторонний (из источника для предназначения или наоборот) или с 2 путями направлено и связать с другими элементами UI на экране.
Можно указать DataTemplates, которые управляют, как отображен конкретный тип. Можно определить триггеры, которые позволяют UI изменяться основанный на изменениях в связанных объектах (или в другом месте в UI). Короче говоря, необходимо действительно посмотреть на WPF, если Вы чувствуете, что состоянию представления UI/привязки недостает.
Вот недавнее сообщение, которое иллюстрирует питание WPF, где с помощью основных конструкций можно отобразить карту с координатами на нем.
В Python для этого можно использовать Enthought Traits . Вы определяете модель, и эта модель уже содержит все знания и логику, так что вы можете создать для нее редактор с помощью одной строчки кода.
Я нахожусь на поздних стадиях проекта переноса кода, сгенерированного AppMaker, из графического интерфейса Macintosh на основе C в WPF.
Стиль генерации кода AppMaker значительно опередил свое время - 15 лет назад он сгенерировал код на основе модели с привязкой данных и подходом на основе свойств. Недостатком кода C является то, что открыта вся внутренняя сеть.
Этот проект был захватывающим - он перенес архитектуру с чистой привязкой и структурой команд (хотя и уродливым кодом) в WPF. На самом деле я написал новый генератор кода AppMaker для экспорта исходной объектной модели в XML и с тех пор работал с Ruby для генерации XAML, C # и C ++ / CLI.
Я очень впечатлен насколько хорошо работает модель привязки данных в WPF, хотя найти золотую середину в том, что добавить в XAML и C #, интересно. Как объяснялось в недавней презентации DevJam , мы выбрали трехуровневый подход:
] Я фанат привязки еще с давних времен - моя структура C ++ OOFILE сначала использовала подход привязки для упрощения соединений базы данных с формами в различных структурах графического интерфейса примерно в 1997 году.
В качестве интересного места я приобрел AppMaker от первоначального владельца из США, после нескольких лет сотрудничества, в котором я написал генераторы кода Windows. Кажется почти невероятным, что небольшая компания в Перте, Западная Австралия, со сложным графическим интерфейсом пользователя для переноса, созданным с помощью AppMaker, обнаружит, что оставшийся в мире эксперт по AppMaker живет примерно в 30 милях от нас!
SWT / JFace, слой пользовательского интерфейса Eclipse, недавно был расширен с возможностями привязки данных пользовательского интерфейса. See http://wiki.eclipse.org/index.php/JFace_Data_Binding