C# 二进制 PSCmdLet |如果使用某个其他参数,则停用参数
C# binary PSCmdLet | deactivate parameters if a certain other parameter is used
我正在寻找如下解决方案:
在我的 cmdlet 中,我使用了一些相互排斥的参数。如果我使用...
[Parameter(Position = 2, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
[ValidateNotNullOrEmpty()]
public string Arguments { get; set; }
其他参数
[Parameter(Position = 4, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
public object[] ModifyUninstallString { get; set; }
用户不应再使用。并逆转。
我尝试了 ParameterSetName,但没有成功。使用动态参数,我只能将两个参数初始化一次。对其他参数的更改不起作用。 :-(
我的尝试:
namespace myNamespace
{
public class NormalArgument
{
[Parameter(Position = 2, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
[ValidateNotNullOrEmpty()]
public string Arguments { get; set; }
}
public class ModifyArgument
{
[Parameter(Position = 4, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
public object[] ModifyUninstallString { get; set; }
}
[Cmdlet(VerbsLifecycle.Uninstall, "Legacy")]
[OutputType(typeof(UninstallLegacy))]
public partial class UninstallLegacy : PSCmdlet, IDynamicParameters
{
private ModifyArgument modArgument = null;
private NormalArgument normArgument = null;
public object GetDynamicParameters()
{
if (modArgument == null)
{
modArgument = new ModifyArgument();
return modArgument;
}
if (normArgument == null)
{
normArgument = new NormalArgument();
return modArgument;
}
if (modArgument != null)
{
normArgument = null;
}
if (normArgument != null)
{
modArgument = null;
}
return null;
}
protected override void ProcessRecord()
{
}
}
}
我该怎么做?
我找到了解决办法!我想的太复杂了!
只有互斥的参数才应该有不同的ParameterSetName。其他都不是。
我正在寻找如下解决方案:
在我的 cmdlet 中,我使用了一些相互排斥的参数。如果我使用...
[Parameter(Position = 2, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
[ValidateNotNullOrEmpty()]
public string Arguments { get; set; }
其他参数
[Parameter(Position = 4, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
public object[] ModifyUninstallString { get; set; }
用户不应再使用。并逆转。 我尝试了 ParameterSetName,但没有成功。使用动态参数,我只能将两个参数初始化一次。对其他参数的更改不起作用。 :-(
我的尝试:
namespace myNamespace
{
public class NormalArgument
{
[Parameter(Position = 2, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
[ValidateNotNullOrEmpty()]
public string Arguments { get; set; }
}
public class ModifyArgument
{
[Parameter(Position = 4, Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = "EXE")]
public object[] ModifyUninstallString { get; set; }
}
[Cmdlet(VerbsLifecycle.Uninstall, "Legacy")]
[OutputType(typeof(UninstallLegacy))]
public partial class UninstallLegacy : PSCmdlet, IDynamicParameters
{
private ModifyArgument modArgument = null;
private NormalArgument normArgument = null;
public object GetDynamicParameters()
{
if (modArgument == null)
{
modArgument = new ModifyArgument();
return modArgument;
}
if (normArgument == null)
{
normArgument = new NormalArgument();
return modArgument;
}
if (modArgument != null)
{
normArgument = null;
}
if (normArgument != null)
{
modArgument = null;
}
return null;
}
protected override void ProcessRecord()
{
}
}
}
我该怎么做?
我找到了解决办法!我想的太复杂了!
只有互斥的参数才应该有不同的ParameterSetName。其他都不是。