Слияние кода завершено, страница обновится автоматически
import interfaces from "./interfaces";
import { METADATA_KEY } from "./constants";
import "reflect-metadata";
export default function Provide(serviceIdentifier: string, args?: Array<any>) {
return function (target: any) {
// 当前 class 的信息
const currentMetadata: interfaces.ProvideSyntax = {
id: serviceIdentifier,
args: args || [],
clazz: target
};
// 已经收集的 class
const previousMetadata: interfaces.ProvideSyntax[] = Reflect.getMetadata(
METADATA_KEY.provide,
Reflect
) || [];
const newMetadata = [currentMetadata, ...previousMetadata];
// 将所有使用 Provide 装饰器标识的 class 都作为 Reflect 的元素据暂存
Reflect.defineMetadata(
METADATA_KEY.provide,
newMetadata,
Reflect
);
return target;
};
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )