The numeric setting of a Dynamic Property only affects the user facing interface - BeanShell variables are dynamically typed (can change type at any time).
$...$ references in BeanShell expressions are (textually) substituted before the BeanShell expression is evaluated (see also here). Thus, if you source Class property has the value A, then
{$Class$}
will become
{A}
before it is evaluated That is a reference to some (non-existent) property A. A reference to an non-existing variable typically gives you back the empty string. If you know Class contains a string value, then your expression should be
{"$Class$"}
which then becomes
{"A"}
before BeanShell evaluation.
For the Number property, if it has the value 41 in the source piece, then
{$Number$+1}
becomes
{41+1}
before BeanShell evaluation, which, of course, evaluates correctly to 42.
Note, if Number in the source piece has a string value, say X, then
{$Number$+1} -> {X+1}
which again is a reference to a non-existing property. As before, that will give you the empty string, so you have
{""+1}
which evaluates to "1".
Perhaps you can give a link to your module so that we can see for ourselves what goes wrong. Please also give a few words on how to reproduce the problem.
Yours,
Christian