Is it time to deprecate COM compatibility through D interfaces?

Yao G. nospamyaoltzin at gmail.com
Tue Apr 13 17:53:32 PDT 2010


On Tue, 13 Apr 2010 19:29:24 -0400, Steven Schveighoffer  
<schveiguy at yahoo.com> wrote:

> Given that structs have become extremely powerful, and with the advent  
> of opDispatch, would it be possible to deprecate supporting COM via D  
> interfaces in favor of a library solution?
>
> There are some crappy drawbacks for having interface be dual-purposed:
>
> - Although 99.9% of interfaces are actually instances of Object, you  
> can't call Object functions directly on an interface.  This includes  
> opEquals, opCmp, toString and friends.
> - They are not implicitly castable to Object.
> - There is no centralized base interface, so there is no argument type  
> you can use that can accept any interface.  For instance, if you wanted  
> to do some runtime reflection to determine an interface's methods or  
> something.
> - All these drawbacks are absolutely pointless on non-Microsoft OSes.
>
> We are in the process of getting rid of builtin complex types in favor  
> of library types -- can we do something similar?
>
> I admit I am not familiar with COM, except my few experiences with it I  
> hated :)  Does anyone actually use D interfaces to represent COM  
> objects?  What would the drawbacks be of interfacing COM objects via  
> compile-time generated structs that do the busy work?
>
> Another possibility is simply making normal interfaces derive from  
> Object, and COM interfaces not.  I think this has been discussed before.
>
> -Steve

Sorry Steve. I just read the messages about opCmp and interfaces, and you  
proposed something similar to what I wrote in my previous message. Well,  
at least it indicates that it's something that surfaces frequently and  
more than one have though about that :)



More information about the Digitalmars-d mailing list