C# Web アプリケーションでよく使用するインデックス付きプロパティを持つ Delphi Prism クラスがいくつかあります (大規模な Delphi Win32 システムを ASP.Net に移行しています)。私の問題は、インデックス付きのプロパティがクラスの既定のプロパティでない場合、C# がインデックス付きのプロパティを認識できないように見えることです。たぶん私は何か間違ったことをしているかもしれませんが、私は完全に迷っています。
この質問がバグ報告によく似ていることはわかっていますが、バグを報告する前に、他の誰かがこれを解決する方法を知っているかどうかを知る必要があります.
このようなクラスがある場合:
TMyClass = public class
private
...
method get_IndexedBool(index: Integer): boolean;
method set_IndexedBool(index: Integer; value: boolean);
public
property IndexedBool[index: Integer]: boolean
read get_IndexedBool
write set_IndexedBool; default; // make IndexedBool the default property
end;
このクラスを C# で次のように使用できます。
var myObj = new TMyClass();
myObj[0] = true;
ただし、TMyClass が次のように定義されている場合:
TMyClass = public class
private
...
method get_IndexedBool(index: Integer): boolean;
method set_IndexedBool(index: Integer; value: boolean);
public
property IndexedBool[index: Integer]: boolean
read get_IndexedBool
write set_IndexedBool; // IndexedBool is not the default property anymore
end;
その後、IndexedBool プロパティは C# で非表示になります。私がそれを使用できる唯一の方法は、これを行うことです:
var myObj = new TMyClass();
myObj.set_IndexedBool(0, true);
何かが足りないのかわかりませんが、プロパティ宣言でデフォルトを削除すると、IndexedBool プロパティが表示されません。それに加えて、クラス インスタンスのプライベート メソッドに直接アクセスするのは間違っていると確信しています。
何か案は?