How to make Delphi Prism indexed properties visible to C# when properties are not default

Posted by Arcturus on Stack Overflow See other posts from Stack Overflow or by Arcturus
Published on 2010-03-18T21:43:52Z Indexed on 2010/03/20 11:31 UTC
Read the original article Hit count: 781

Filed under:
|

I have several Delphi Prism classes with indexed properties that I use a lot on my C# web applications (we are migrating a big Delphi Win32 system to ASP.Net). My problem is that it seems that C# can't see the indexed properties if they aren't the default properties of their classes. Maybe I'm doing something wrong, but I'm completely lost.

I know that this question looks a lot like a bug report, but I need to know if someone else knows how to solve this before I report a bug.

If I have a class like this:

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;

I can use this class in C# like this:

var myObj = new TMyClass();

myObj[0] = true;

However, if TMyClass is defined like this:

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;

Then the IndexedBool property becomes invisible in C#. The only way I can use it is doing this:

var myObj = new TMyClass();

myObj.set_IndexedBool(0, true);

I don't know if I'm missing something, but I can't see the IndexedBool property if I remove the default in the property declaration. Besides that, I'm pretty sure that it is wrong to have direct access to a private method of a class instance.

Any ideas?

© Stack Overflow or respective owner

Related posts about delphi-prism

Related posts about c#