Extending an interface or class outside of it
Frustrated
c1514843 at drdrb.com
Mon Nov 25 23:33:13 PST 2013
On Tuesday, 26 November 2013 at 06:40:24 UTC, Ali Çehreli wrote:
> On 11/25/2013 09:11 PM, Frustrated wrote:
>
> > On Tuesday, 26 November 2013 at 05:03:45 UTC, Ali Çehreli
> wrote:
> >> On 11/25/2013 04:27 PM, Frustrated wrote:
> >>> I have some type of automatically generated interface using
> a mixin an
> >>> would like to extend them after they are generated:
> >>>
> >>> mixin(GenerateMyInterface!(...));
> >>>
> >>> ... <Here I would like to add some members/methods to
> MyInterface
> >>> which was generated above> ...
> >>>
> >>> Is this at all possible?
> >>>
> >>>
> >>
> >> Just inherit from it:
> >>
> >> interface MyInterface
> >> {
> >> void foo();
> >> }
> >>
> >> interface EvenMoreMyInterface : MyInterface
> >> {
> >> void bar();
> >> }
> >>
> >> Ali
> >
> > No, this is not the way. I am creating the interface and need
> to add to
> > it only because it is generated.
>
> I can be very thick sometimes. :) How about changing the names
> of the interfaces:
>
> interface LessMyInterface
> {
> // ...
> }
>
> interface MyInterface : LessMyInterface
> {
> // ...
> }
>
> > If I inherit from it then I would have to update all
> references that use the
> > interface to use the new one.
>
> No code needs to be changed. Everybody keeps using MyInterface.
>
> Ali
This may work, even though it pollutes the namespace. Probably
not a big deal though, better than having to completely generate
the interface as a string(which offers very little compilation
support(syntax errors, etc). It would be nice to have partial
classes similar to C# even if they have to be in the same module
which may seem pointless but with mixins it would definitely
solve my problem.
More information about the Digitalmars-d-learn
mailing list