.net - PowerShell,扩展方法和猴子修补

标签 .net powershell extension-methods monkeypatching

是否可以在PowerShell中编写扩展方法?还是在运行时像[string]这样的现有类型之上添加新方法?

最佳答案

我不知道用扩展方法修补类型的方法。但是当然可以通过add-member cmdlet修补对象

PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar

编辑解释完全可读的PowerShell语法:)

我喜欢PowerShell,但确实确实会时不时地使用隐含语法。
  • “-in”:这是inputObject的缩写,本质上说是为此
  • 添加成员
  • “-memberType”:您可以向运行时对象添加许多不同类型的值,包括方法,注释属性,代码方法等。有关完整列表,请参见“get-help add-member -full”
  • “-passthru”:取出刚刚添加了成员​​的对象,并将其向下插入管道。没有此标志,分配将是分配给$a并清空管道。
  • 分配调用基本上可以确保$a现在具有您添加的
  • 方法

    关于.net - PowerShell,扩展方法和猴子修补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/840907/

    相关文章:

    c# - 用户控件 anchor 属性问题

    c# - 表达式方法,大于如何实现

    c# - Powershell 实例的 Streams 属性上的 "Information"属性在编译时不可用

    c# - 如何实现接受匿名类型的 C# 扩展方法

    c# - 使用 : Dictionary<>. ForEach(pair =>) 或 Dictionary<>.Keys.ForEach(key =>) 哪个更好?

    c# - 如何从 C# 中的 xml 中读取特定节点?

    c# - 在 C# 中,显示可缩放和平移视频的好方法是什么?

    powershell - 使用通配符从路径中获取实际路径

    azure - 使用 Azure Powershell 函数从 Azure Blob 存储读取 XLSX 文件

    c# - POCO 类的扩展方法在什么时候过度杀伤?