PowerArgs.ArgumentAwareTabCompletionAttribute.CreateTabCompletionSource C# (CSharp) Method

CreateTabCompletionSource() private method

private CreateTabCompletionSource ( CommandLineArgumentsDefinition definition, CommandLineArgument argument ) : object
definition CommandLineArgumentsDefinition
argument CommandLineArgument
return object
        internal object CreateTabCompletionSource(CommandLineArgumentsDefinition definition, CommandLineArgument argument)
        {
            ITabCompletionSource ret;
            if(this.CompletionSourceType.GetInterfaces().Contains(typeof(ISmartTabCompletionSource)))
            {
                var source = Activator.CreateInstance(CompletionSourceType) as ISmartTabCompletionSource;
                return new ArgumentAwareWrapperSmartTabCompletionSource(definition, argument, source);
            }
            else if (this.CompletionSourceType.IsSubclassOf(typeof(ArgumentAwareTabCompletionSource)))
            {
                ret = (ITabCompletionSource)Activator.CreateInstance(this.CompletionSourceType, definition, argument);
            }
            else if (this.CompletionSourceType.GetInterfaces().Contains(typeof(ITabCompletionSource)))
            {
                var toWrap = (ITabCompletionSource)Activator.CreateInstance(this.CompletionSourceType);
                ret = new ArgumentAwareWrapperTabCompletionSource(definition, argument, toWrap);
            }
            else
            {
                throw new InvalidArgDefinitionException("The type " + this.CompletionSourceType.FullName + " does not implement ITabCompletionSource or ITabCompletionSource.  The target argument was " + argument.DefaultAlias);
            }

            return ret;
        }