如何从C#获取和设置带有参数的vb6属性?

我需要从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属性?

编辑:

此方法不适用于动态方法. AFAIK与COM Interop一起使用:

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;

解决方法:

在C#属性中,索引器的写法与数组类似.

obj.Prop[enumValue] = 1.2m;
上一篇:23、Scrapy框架使用


下一篇:如何在VB6和C#之间共享接口?