I have a c# method I am loading from a dll with optional string arguments that default to null
. For example
public void foo(string path, string
No can do in PowerShell. It doesn't support C#/VB optional parameters. It is the duty of the language calling the method to provide the default values when the programmer doesn't and PowerShell just doesn't do that.
You can simply omit the optional parameters in the call. I modified your example to run it in PS. For example:
$c = @"
public static class Bar {
public static void foo(string path, string new_name = null, bool save_now = true)
{
System.Console.WriteLine(path);
System.Console.WriteLine(new_name);
System.Console.WriteLine(save_now);
}
}
"@
add-type -TypeDefinition $c
[Bar]::Foo("test",[System.Management.Automation.Language.NullString]::Value,$false)
This generates the following
test
False
Test was passed explicitly, null is null and had no output, and the save_now evaluated to the default of True.