> interface A(T) > { > @property T Value(); > @property T Value(T value); > // need to enforce alias Value this somehow > } > > class B(T) : A!T > { > private T _value; > @property T Value() { return _value; } > @property T Value(T value) { return value = _value; } alias Value this; > // B must use alias this so B(T) behaves like type T > }