object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
{
if (editorBaseType == null)
{
throw new ArgumentNullException(nameof(editorBaseType));
}
// Check to see if the provider we get is a ReflectTypeDescriptionProvider.
// If so, we can call on it directly rather than creating another
// custom type descriptor
TypeDescriptionProvider p = _node.Provider;
ReflectTypeDescriptionProvider rp = p as ReflectTypeDescriptionProvider;
object editor;
if (rp != null)
{
editor = rp.GetEditor(_objectType, _instance, editorBaseType);
}
else
{
ICustomTypeDescriptor desc = p.GetTypeDescriptor(_objectType, _instance);
if (desc == null) throw new InvalidOperationException(SR.Format(SR.TypeDescriptorProviderError, _node.Provider.GetType().FullName, "GetTypeDescriptor"));
editor = desc.GetEditor(editorBaseType);
}
return editor;
}