Взгляните на PropertyDescriptor вместо PropertyInfo.
Это может быть обеспечено путем переопределения двух методов Properties в производном классе TypeConverter.
Немного изобретательности, вы можете заставить его делать что угодно.
В настоящее время я использую это, чтобы предоставить плоский список свойств для различных культур и значений для целей перевода, и передать его в PropertyGrid, в то время как структура класса выглядит следующим образом:
class TagName
{
Culture culture;
string content;
}
[TypeConverter(typeof(TagConverter))]
class Tag
{
TagName[] tagNames;
}
В PropertyDescriptor вы имеете полный контроль над тем, как значения устанавливаются и получают через конкретный экземпляр PropertyDescriptor.