@property and interfaces
Jonathan M Davis
jmdavisprog at gmail.com
Tue Jun 29 03:32:16 PDT 2010
On Tuesday 29 June 2010 03:11:34 BLS wrote:
> Just wonder how to translate this C# snippet into D..
> //C#
> public interface IBindingList {
>
> bool AllowEdit {
> get;
> }
> }
>
> //D2
> interface IBindingList {
>
> @property bool allowEdit();
> }
>
> Is this correct ? I think in C# AllowEdit() takes tare that you don't
> implement a setter. Seems to be impossible in D.
>
> Thanks Bjoern
Well, with the way that properties are implemented in D, I don't think that the
getters and setters have any real relation with one another. If a getter is
declared, you can use the property as an rvalue. If a setter is declared, you
can use it as an lvalue. AFAIK, they don't really have any effect on each other
and aren't really related. So, there certainly won't be any restriction on
having a getter or setter in a class if an interface it implements declared only
one. It's just that you'll only be able to use the one that's part of the
interface if you're using a reference of the interface type rather than the
implementing class.
And really, I see no point in it being more restrictive. The interface itself
should be properly restrictive if you use it since it only declares one of the
two. And if you're using the class directly, then what does what the interface
does and doesn't have matter? You're using the class at that point, not the
interface.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list