多くのデリゲートを使用する .NET API があります。私の API には、次のようなメソッドがいくつかあります。
public static class MyClass
{
public static void DoSomethingWithString(Func<object> myFunc)
{
string myStringValue = myFunc().ToString();
Console.WriteLine(myStringValue);
}
public static void DoSomethingWithDouble(Func<object> myFunc)
{
object unparsedValue = myFunc();
double parsedValue = Convert.ToDouble(unparsedValue);
Console.WriteLine(parsedValue);
}
}
現在、PowerShell には次のものがあります。
[MyClass]::DoSomethingWithString({ "Hello" }); # No error here
[MyClass]::DoSomethingWithDouble({ 123.4 }); # InvalidCastException - can't convert a PSObject to double
問題は、PowerShell スクリプト ブロックが実際の double 値ではなく PSObject を返すことです。私の .NET API は PowerShell について何も知りません。また、この特定のシナリオに特別な処理を追加できるように、PowerShell DLL への参照を追加したくありません。
スクリプト ブロックが PSObject ではなく実際の値の型を返すようにする方法はありますか? または、.NET ライブラリが PSObject を処理するための PowerShell に依存しない方法はありますか?