У меня есть несколько классов Delphi Prism с индексированными свойствами, которые я часто использую в своих веб-приложениях на C # (мы переносим большую систему 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, если я удаляю default в объявлении свойства. Кроме того, я уверен, что неправильно иметь прямой доступ к закрытому методу экземпляра класса.
Есть идеи?