终于搞明白这个 IComponent.Site是什么意思了。
public class ItemBuilderConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof (string))
return true;
return base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof (string))
return true;
return base.CanConvertTo(context, destinationType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value == null || value.ToString() == string.Empty) return string.Empty;
object result = context.Container.Components[value.ToString()];
if (result != null)
{
return value.ToString();
}
return string.Empty;
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (destinationType == null) throw new Exception("目标类型为null");
if (value == null) return null;
return base.ConvertTo(context, culture, value, destinationType);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
IList list = new ArrayList();
IEnumerator itor = context.Container.Components.GetEnumerator();
while(itor.MoveNext())
{
object item = itor.Current;
if(item is IListsBuilder)
{
list.Add( ((IComponent)item).Site.Name );
}
}
if (list.Count > 0)
{
return new StandardValuesCollection(list);
}
return base.GetStandardValues(context);
}
}
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof (string))
return true;
return base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof (string))
return true;
return base.CanConvertTo(context, destinationType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value == null || value.ToString() == string.Empty) return string.Empty;
object result = context.Container.Components[value.ToString()];
if (result != null)
{
return value.ToString();
}
return string.Empty;
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (destinationType == null) throw new Exception("目标类型为null");
if (value == null) return null;
return base.ConvertTo(context, culture, value, destinationType);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
IList list = new ArrayList();
IEnumerator itor = context.Container.Components.GetEnumerator();
while(itor.MoveNext())
{
object item = itor.Current;
if(item is IListsBuilder)
{
list.Add( ((IComponent)item).Site.Name );
}
}
if (list.Count > 0)
{
return new StandardValuesCollection(list);
}
return base.GetStandardValues(context);
}
}