Я хотел бы получить доступ к object
объектам через PropertyGrid и заставить их вести себя как реальные вещи, которые они представляют.Для игрушечного класса, такого как;
[TypeConverter(typeof(ObjectBucket.ObjectBucketConverter))]
class ObjectBucket
{
public object foo;
[Browsable(true)]
public object Object
{
get { return foo; }
set { foo = value; }
}
private class ObjectBucketConverter : ExpandableObjectConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string) ? true : base.CanConvertFrom(context, sourceType);
}
}
}
, я хотел бы иметь возможность задать, скажем, float
через средство доступа Object, а затем заставить его вести себя как float
в PropertyGrid, ачем стандартное object
поведение, когда он ничего не может с этим поделать.
В качестве обходного пути я добавил следующий метод доступа:
[Browsable(true)]
public string ObjectStr
{
get { return foo.ToString(); }
set
{
try
{
foo = TypeDescriptor.GetConverter(foo.GetType()).ConvertFromInvariantString(value);
}
catch
{
return;
}
}
}
, который позволяет мне манипулироватьобъект, но это не идеал.Возможно ли то, что я хочу сделать?