设计思路
- 定义参数装饰器:用于标记需要注入
UserService
实例的参数。
- 创建
UserService
类:包含用户相关的操作方法。
- 实现依赖注入逻辑:在调用标记了装饰器的函数时,注入
UserService
实例。
关键代码实现
// 定义UserService类
class UserService {
getUserInfo() {
return "User information";
}
}
// 定义参数装饰器
function injectUserService(target: any, propertyKey: string | symbol, parameterIndex: number) {
const originalMethod = target[propertyKey];
target[propertyKey] = function(...args: any[]) {
const userService = new UserService();
args.splice(parameterIndex, 0, userService);
return originalMethod.apply(this, args);
};
}
// 使用参数装饰器
class UserController {
handleUserBusiness(@injectUserService userService: UserService) {
return userService.getUserInfo();
}
}
// 测试
const controller = new UserController();
console.log(controller.handleUserBusiness());