我有一个使用许多委托的.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脚本块返回的是PSObject而不是实际的双精度值。我的.NET API对PowerShell一无所知,我不想添加PowerShell DLL的引用,只是为了针对这个特定情况添加特殊处理。
有没有办法让我的脚本块返回实际值类型而不是PSObject?或者,有没有适用于所有PowerShell版本的方法,让我的.NET库处理PSObject?