C# SSIS Custom Control Flow Task List Variables in Property Grid Drop Down List
===

I'm putting together a custom control flow SSIS task for the first time in C#.  On my task UI editor I have a property grid and in one of the options I would like to be able to populate a drop down list of any task variables available as well as give the user the option of creating a new one.  I've been researching for a few days and I have found some good examples on the forum but I'm a little lost now.  My code as follows compiles and the editor displays a drop down list but its blank.  After stepping through it, it appears to be down to this line: 

    taskHostProperty = context.Instance.GetType().GetProperty("TransferTask", typeof(TaskHost));The "TransferTask" being the name of my control flow task.  I'm wondering if this is correct?  

My full code for this is below.
    
    //Property Grid Property
      [Category("General"),
                Description("Specifies the local Path for this task"),
                Browsable(true),
                ReadOnly(false),
                DesignOnly(false),
                TypeConverter(typeof(VariableConverter)),
                DisplayName("Local Path")]            
                public string LocalPath
                {
                	get
                    {
                        return this.stLocalPath;
                    }
                    set
                    {                    
                        dtsVariableService = serviceProvider.GetService(typeof(IDtsVariableService)) as IDtsVariableService;
                        dtsVariableService.PromptAndCreateVariable(parentWindow, dtsContainer,"Local Path","User",typeof(string));
                        this.stLocalPath = value;
                    }
                } 
    //Variable Converter
    internal class VariableConverter : TypeConverter
            {
                StandardValuesCollection svc = new StandardValuesCollection(new ArrayList());
                public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
                {
                    return true;
                }
                public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
                {
                    TaskHost taskHost = null;
                    PropertyInfo taskHostProperty = null;
                    List<string> values = new List<string>();
                    values.Add(NEW_VARIABLE);
                    if (context == null)
                    {
                        return svc;	
                    }
                    if (context.Instance == null)
                    {
                        return svc;
                    }
                    taskHostProperty = context.Instance.GetType().GetProperty("TransferTask", typeof(TaskHost));
                    if (taskHostProperty == null)
                    {
                        return svc;
                    }
                    taskHost = taskHostProperty.GetValue(context.Instance, null) as TaskHost;
     
                    foreach(Variable v in taskHost.Variables)
                    {
                    	if (!v.SystemVariable && v.DataType == TypeCode.String)
                        {
                            values.Add(v.QualifiedName);
                        }
                    }
                    values.Sort();
                    return new StandardValuesCollection(values);
        }

