typeof(this) return wrong type

Stefan Koch via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 22 04:36:09 PDT 2017


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.


More information about the Digitalmars-d-learn mailing list