Class-Interface compatibility
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Mon Mar 31 02:35:34 PDT 2008
[fixed upside-down post]
Scott S. McCoy wrote:
> On Sun, 2008-03-30 at 23:25 +0200, Frank Benoit wrote:
>> COM is the only reason I am aware of, why interfaces are not implicit
>> compatible to to object.Object. But COM is a very special case which
>> probably can get a special solution?
>>
>> How about making /IUnknown/ a special interface without this
>> compatibility and have all interfaces, not derived from IUnknown be
>> compatible to Object?
> It is kind of curious why interface typed identifiers don't implicitly
> cast to Object, and you must explicitly cast.
>
> But regardless of the reason, adopting a convention (and a bad one at
> that) such as prefixing interfaces with "I" probably shouldn't be done
> at the language level. And even more, D already has avoided creating
> any kind of special types (you can throw Object, for instance, and it's
> not a derivative of /Exception/) so far as I can tell...why start now?
He didn't propose handling interfaces starting with 'I' differently. He
proposed handling interfaces derived from IUnknown differently. They're
already treated differently[1], but he wanted to change the behavior of
other interfaces without adding the same change to IUnknown-derived
interfaces (since it wouldn't work there[2]).
[1]: See the last part of <http://www.digitalmars.com/d/1.0/interface.html>.
[2]: Objects referred to by COM interface references (see [1]) may be
implemented in a different language than D, and so may not be compatible
with the D Object class at all.
More information about the Digitalmars-d
mailing list