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: 840
delphi-prism
|c#
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