On Saturday, 22 April 2017 at 11:45:54 UTC, Andrey wrote:
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.
use a "template this" parameter:
void onCreate(this T)()
{
writeln(getSymbolsByUDA!(T, OnClickListener).stringof);
}
if possible. The problem is not solved if onCreate is not called
on the most derived.