PowerShell自定义类能否采用类似系统类的命名空间格式定义?
PowerShell自定义类的命名空间定义方法
当然可以给自定义类添加命名空间,但不能直接写成class <myCompany>.<myClass> {}这种格式,得用namespace关键字先声明命名空间,再在里面定义类。
举个实际的例子:
# 声明命名空间并定义类 namespace MyCompany { class User { [string]$Username [string]$Email [string]GetFullInfo() { return "用户:$($this.Username),邮箱:$($this.Email)" } } }
调用的时候有两种方式:
- 使用完整的命名空间+类名:
$user = [MyCompany.User]::new() $user.Username = "Fitzgery" $user.Email = "test@example.com" $user.GetFullInfo()
- 先导入命名空间,后续直接用类名:
using namespace MyCompany $user2 = [User]::new() $user2.Username = "Guest" $user2.Email = "guest@example.com" $user2.GetFullInfo()
另外命名空间还支持嵌套,比如定义更细分的层级:
namespace MyCompany.Utils { class StringHelper { static [string]ToUpper([string]$input) { return $input.ToUpper() } } } # 调用嵌套命名空间的类 [MyCompany.Utils.StringHelper]::ToUpper("hello")
内容的提问来源于stack exchange,提问作者Fitzgery
相关产品推荐
相关产品推荐

