Я хочу использовать делегат func в моем статическом классе PowerShell 5.0:
У меня были проблемы с поиском способа назначить другие методы статического класса для моего делегата.
Этот код работает, но не очень удобно.
Есть ли лучший способ использовать делегата здесь?
И мне нужно создать свою статику! класс, только чтобы получить тип.
Я попробовал закомментированную строку, как бы вы делали это с типами .NET, но она не работает для моего собственного класса.
Как мне сделать тип моего статического класса здесь более элегантным?
И, кстати, GetMethod () не принял параметр BindingFlags, почему?
class Demo
{
hidden static [object] Method_1([string] $myString)
{
Write-Host "Method_1: $myString"
return "something"
}
hidden static [object] Method_2([string] $myString)
{
Write-Host "Method_2: $myString"
return $null
}
hidden static [object] TheWrapper([string]$wrappedMethod, [string] $parameter)
{
# do a lot of other stuff here...
#return [System.Type]::GetType("Demo").GetMethod($wrappedMethod).CreateDelegate([Func``2[string, object]]).Invoke($parameter)
return [Demo]::new().GetType().GetMethod($wrappedMethod).CreateDelegate([Func``2[string, object]]).Invoke($parameter)
}
static DoWork()
{
Write-Host ([Demo]::TheWrapper('Method_1', 'MyMessage'))
[Demo]::TheWrapper('Method_2', 'c:\my_file.txt')
}
}
[Demo]::DoWork()