typeof(this) return wrong type

Andrey via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 22 04:45:54 PDT 2017


On Saturday, 22 April 2017 at 11:36:09 UTC, Stefan Koch wrote:
> On Saturday, 22 April 2017 at 11:33:22 UTC, Andrey wrote:
>> Hello, I trying to add custom attribute OnClickListener, the 
>> problem is that typeof always return BaseView type instead of 
>> MyView.
>>> struct OnClickListener {
>>>     string id;
>>> }
>>>
>>> class BaseView {
>>>     void onCreate() {
>>>         writeln(getSymbolsByUDA!(typeof(this), 
>>> OnClickListener).stringof);
>>>     }
>>> }
>>>
>>> class MyView : BaseView {
>>>     @OnClickListener("okButton")
>>>     void onOkButtonClick() {
>>>         writeln("Hello world!");
>>>     }
>>> }
>
> typeof returns a static type not a dynamic type.
> If there is a branch of the function that does not return 
> myview the closed base-type is used.

How to best solve this problem? I do not want using template 
mixin for this. It works for me using realtime.


More information about the Digitalmars-d-learn mailing list