我有一个使用大量委托的 .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 的引用,以便为这个特定场景添加特殊处理。
有没有办法让我的脚本块返回实际值类型而不是 PSObjects?或者我的 .NET 库是否有与 PowerShell 无关的方式来处理 PSObject?