/// <summary>
///
/// </summary>
/// <param name="obj"></param>
/// <remarks>
/// All abount Cmdlet parameters: http://msdn2.microsoft.com/en-us/library/ms714433(VS.85).aspx
/// </remarks>
internal override void BindArguments(PSObject obj)
{
if ((obj == null) && (Parameters.Count == 0))
{
return;
}
// TODO: bind the arguments to the parameters
CommandParameterSetInfo paramSetInfo = _cmdletInfo.GetDefaultParameterSet();
// TODO: refer to the Command._ParameterSetName for a param set name
if (obj != null)
{
foreach (CommandParameterInfo paramInfo in paramSetInfo.Parameters)
{
if (paramInfo.ValueFromPipeline)
{
BindArgument(paramInfo.Name, obj, paramInfo.ParameterType);
}
}
}
if (Parameters.Count > 0)
{
// bind by position location
for (int i = 0; i < Parameters.Count; i++)
{
CommandParameterInfo paramInfo = null;
CommandParameter parameter = Parameters[i];
if (string.IsNullOrEmpty(parameter.Name))
{
paramInfo = paramSetInfo.GetParameterByPosition(i);
if (paramInfo != null)
{
BindArgument(paramInfo.Name, parameter.Value, paramInfo.ParameterType);
}
}
else
{
paramInfo = paramSetInfo.GetParameterByName(parameter.Name);
if (paramInfo != null)
{
BindArgument(paramInfo.Name, parameter.Value, paramInfo.ParameterType);
}
}
}
}
}