我已经将COM对象附加到属性网格。

Type typeObj = Type.GetTypeFromProgID(progIdService);
var obj = Activator.CreateInstance(typeObj);
propertyGrid1.SelectedObject = obj;


现在,我需要使用某种翻译器将对象字段翻译成我的语言的方法。我试图在对象周围使用包装器,但是对于COM对象,我没有PropertyInfo,只有PropertyDescription,所以我仍在寻找实现它的所有可能变体。

最佳答案

您可以做的是重用我在SO上对此问题的回答中描述的DynamicTypeDescriptor类:PropertyGrid Browsable not found for entity framework created property, how to find it?

像这样:

DynamicTypeDescriptor dtp = new DynamicTypeDescriptor(typeObj);

// get current property definition and remove it
var current = dtp.Properties["ThePropertyToChange"];
dtp.RemoveProperty("ThePropertyToChange");

// add a new one, but change its display name
DynamicTypeDescriptor.DynamicProperty prop = new DynamicTypeDescriptor.DynamicProperty(dtp, current, obj);
prop.SetDisplayName("MyNewPropertyName");
dtp.AddProperty(prop);

propertyGrid1.SelectedObject = dtp.FromComponent(obj);

10-04 18:47