YieldDynamicOption() public abstract method

Used by a provider to return the fields for a Metadata Definition The cmdlets can use this to supply tab-completion for metadata to the user.
public abstract YieldDynamicOption ( string name, string expectedType, bool isRequired ) : bool
name string the provider-defined name of the option
expectedType string one of ['string','int','path','switch']
isRequired bool if the parameter is mandatory
return bool
        /// <summary>
        /// Returns dynamic option definitions to the HOST
        ///
        /// example response:
        ///     request.YieldDynamicOption( "MySwitch", OptionType.String.ToString(), false);
        ///
        /// </summary>
        /// <param name="category">The category of dynamic options that the HOST is interested in</param>
        /// <param name="request">An object passed in from the PackageManagement that contains functions that can be used to interact with its Provider</param>
        public void GetDynamicOptions(string category, Request request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (category == null)
            {
                request.Warning(Resources.Messages.UnknownCategory, PackageProviderName, "GetDynamicOptions", category);
                return;
            }

            switch ((category ?? string.Empty).ToLowerInvariant())
            {
            case "install":
                // put any options required for install/uninstall/getinstalledpackages

                request.YieldDynamicOption("Destination", Constants.OptionType.Folder, false);
                request.YieldDynamicOption("ExcludeVersion", Constants.OptionType.Switch, false);
                request.YieldDynamicOption("Scope", Constants.OptionType.String, false, new[] { Constants.CurrentUser, Constants.AllUsers });
                request.YieldDynamicOption("SkipDependencies", Constants.OptionType.Switch, false);
                //request.YieldDynamicOption("ContinueOnFailure", Constants.OptionType.Switch, false);
                break;

            case "source":
                // put any options for package sources
                request.YieldDynamicOption("ConfigFile", Constants.OptionType.String, false);
                request.YieldDynamicOption("SkipValidate", Constants.OptionType.Switch, false);
                break;

            case "package":
                // put any options used when searching for packages
                request.YieldDynamicOption("Headers", Constants.OptionType.StringArray, false);
                request.YieldDynamicOption("FilterOnTag", Constants.OptionType.StringArray, false);
                request.YieldDynamicOption("Contains", Constants.OptionType.String, false);
                request.YieldDynamicOption("AllowPrereleaseVersions", Constants.OptionType.Switch, false);
                break;

            default:
                request.Warning(Resources.Messages.UnknownCategory, PackageProviderName, "GetDynamicOptions", category);
                break;
            }
        }
        /// <summary>
        /// Returns dynamic option definitions to the HOST
        ///
        /// example response:
        ///     request.YieldDynamicOption( "MySwitch", OptionType.String.ToString(), false);
        ///
        /// </summary>
        /// <param name="category">The category of dynamic options that the HOST is interested in</param>
        /// <param name="request">An object passed in from the PackageManagement that contains functions that can be used to interact with its Provider</param> 
        public void GetDynamicOptions(string category, Request request)
        {
            if (request == null){
                throw new ArgumentNullException("request");
            }

            if (category == null)
            {
                request.Warning(Resources.Messages.UnkownCategory, PackageProviderName, "GetDynamicOptions", category);
                return;
            }

            switch ((category ?? string.Empty).ToLowerInvariant()) {
                case "install":
                    // put any options required for install/uninstall/getinstalledpackages

                    request.YieldDynamicOption("Destination", Constants.OptionType.Folder, false);
                    request.YieldDynamicOption("ExcludeVersion", Constants.OptionType.Switch, false);
                    request.YieldDynamicOption("Scope", Constants.OptionType.String, false, new[] { Constants.CurrentUser, Constants.AllUsers });
                    //request.YieldDynamicOption("SkipDependencies", Constants.OptionType.Switch, false);
                    //request.YieldDynamicOption("ContinueOnFailure", Constants.OptionType.Switch, false);
                    break;

                case "source":
                    // put any options for package sources
                    request.YieldDynamicOption("ConfigFile", Constants.OptionType.String, false);
                    request.YieldDynamicOption("SkipValidate", Constants.OptionType.Switch, false);
                    break;

                case "package":
                    // put any options used when searching for packages
                    request.YieldDynamicOption("Headers", Constants.OptionType.StringArray, false);
                    request.YieldDynamicOption("FilterOnTag", Constants.OptionType.StringArray, false);
                    request.YieldDynamicOption("Contains", Constants.OptionType.String, false);
                    request.YieldDynamicOption("AllowPrereleaseVersions", Constants.OptionType.Switch, false);
                    break;
                default:
                    request.Warning(Resources.Messages.UnkownCategory, PackageProviderName, "GetDynamicOptions", category);
                    break;
            }
        }