我希望能够为我的power
shell函数创建和分配自定义属性.我到处看,似乎有可能,但我还没有看到一个例子.我在C#中创建了一个自定义属性,并在我的powershell脚本中引用了程序集.但是,我收到一条错误,指出Unexpected属性’MyDll.MyCustom’.
这是我有的:
MyDll.dll中的MyCustomAttribute:
namespace MyDll
{
[AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = false)]
public sealed class MyCustomAttribute : Attribute
{
public MyCustomAttribute(String Name)
{
this.Name= Name;
}
public string Name { get; private set; }
}
}
PowerShell脚本:
Add-Type -Path "./MyDll.dll";
function foo {
[MyDll.MyCustom(Name = "This is a good function")]
# Do stuff
}
但值得注意的是,如果我这样做:
$x = New-Object -TypeName "MyDll.MyCustomAttribute" -ArgumentList "Hello"
它工作正常.所以类型显然正确加载.我在这里错过了什么?
最佳答案 看似需要改变的两件事:
>命令属性需要在语法上位于param()块之前.
>使用Name =说明符似乎会导致PowerShell解析器将属性参数视为初始化程序,此时构造函数将无法解析.
function foo {
[MyDll.MyCustom("This is a good function")]
param()
# Do stuff
}