我需要从 vb6 对象获取和设置带有参数的属性:
Property Prop(ByVal type As SomeEnum) As Currency
这就是我创建对象实例的方式:
dynamic obj = Activator.CreateInstance(Type.GetTypeFromProgID(progID));
我在 c# 中尝试了 vb6 语法,但它不起作用(甚至无法编译):
obj.Prop(enumValue) = 1.2m;
所以问题是:如何从 c# 获取和设置带有参数的 vb6 属性?
编辑:
此方法不适用于dynamic
. AFAIK 它适用于 COM 互操作:
obj.get_Prop(enumValue);
obj.set_Prop(enumValue, newValue);
反射方法工作得很好,但它太冗长了:
obj.GetType().InvokeMember("Prop", System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.SetProperty, null, obj,
new object[] { enumValue, 1.2m });
属性索引器方法也适用:
obj.Prop[enumValue] = 1.2m;