I have the following chunk of code that needs to conditionally instantiate existing classes (at compilation time) named classTickerCustom{ExchangeID} with one or ... two parameters (if any); eg:

```d
/// securities trading on exchange primary currency; eg: USD

... = new classTickerCustomNYSE("AMC");
... = new classTickerCustomNASDAQ("TSLA");

/// securities trading on exchange secondary currency; eg: EUR

... = new classTickerCustomNYSE("XXX", "EUR");
... = new classTickerCustomNASDAQ("YYY", "EUR");

/// not real cases ... of course
```

And I already have a working solution using:

```d
static if (__traits(hasMember, "...", "...") == true) {

   ...

}
```

More specifically:

```d
...

mixin(format!

   ` /// code chunk

static if (__traits(hasMember, r"classTickerCustom%1$s"d, r"lstrCurrencyID"d) == true) { /// checking whether target class has an optional second parameter labeled lstrCurrencyID:

classTickerCustom%1$s lobjTickerCustom%1$s = new classTickerCustom%1$s(
         ludtTicker.symbolID,
ludtTicker.currencyID /// overriding exchange primary currency ID with given one
         );

   } else {

classTickerCustom%1$s lobjTickerCustom%1$s = new classTickerCustom%1$s(ludtTicker.symbolID);

   }

   `(sudtExchange.ID) /// code chunk

); /// mixin ending

...
```

However, __traits(hasMember, ...) checks for the existence of anything labeled lstrCurrencyID within the class (eg: unrelated variables with same name; not gonna happen, but, I like to code it the right way); so, question is: is there any way to search the parameter declarations only ?

Something akin to https://dlang.org/spec/traits.html#getParameterStorageClasses but for the parameter types/labels

Reply via email to