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;