Is it time to deprecate COM compatibility through D interfaces?
    Kagamin 
    spam at here.lot
       
    Wed Apr 14 09:12:03 PDT 2010
    
    
  
Steven Schveighoffer 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?
> 
COM interface is not a D interface.
> 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.
1. Interfaces don't derive from object.
2. You always know which interface is a D interface and which isn't, so you always know, whether you can cast it to object or not.
> - They are not implicitly castable to Object.
This has nothing to do with COM interfaces, I believe.
> - 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.
This is irrelevant to COM interfaces either. Can you use Variant for this purpose?
> - All these drawbacks are absolutely pointless on non-Microsoft OSes.
> 
They are pointless on ms oses too. And have nothing to do with COM. And dmd supports XPCOM.
> We are in the process of getting rid of builtin complex types in favor of  
> library types -- can we do something similar?
> 
If you have a solution, we can.
> 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?
> 
Syntax, I suppose.
    
    
More information about the Digitalmars-d
mailing list