Even better, try this main instead the previous: int main () {
IMixinInterface fooer = new NothingSpecialFooer(); fooer.foo(); fooer = new TheSpecialFooer(); fooer.foo(); return 0; } Here we use the interface as the type of the object to show polymorphism with mixin happening. It prints: $ ./test ** Message: test.vala:5: fooed defaulty! ** Message: test.vala:13: dummy string ** Message: test.vala:22: fooed specially! On Sun, Feb 28, 2016 at 7:24 PM, Felipe Lavratti <felipe...@gmail.com> wrote: > Right, I see what u are asking now. > > Well, if you want to do Mixins in Vala, you'll have to do the "static" > workaround, since it doesn't support by default: > https://wiki.gnome.org/Projects/Vala/Tutorial#Mixins_and_Multiple_Inheritanae > > Now you want to do Mixing with Generics? Ok, add the generic argument to > each Mixin method of your interface: > > public interface IMixinInterface : Object { > public abstract void foo(); > > public static T default_fooing<T>(T arg) { > GLib.message("fooed defaulty!"); > return arg; > } > } > > public abstract class BaseFooer : Object, IMixinInterface { > public virtual void foo() { > var dummy_string = IMixinInterface.default_fooing<string>("dummy > string"); > GLib.message(dummy_string); > } > } > > public class NothingSpecialFooer : BaseFooer { > } > > public class TheSpecialFooer : BaseFooer { > public override void foo() { > GLib.message("fooed specially!"); > } > } > > int main () { > > var fooer = new NothingSpecialFooer(); > fooer.foo(); > > var fooer2 = new TheSpecialFooer(); > fooer2.foo(); > > return 0; > } > > > This example doesn't cover BaseFooer taking a generic argument, if the > example is not enough, please provide me more details about how is the > generic argument used in BaseFooer. > > - Fanl > > -- Skype: felipeanl _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list