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