not sure if your code has any actual problems, but mine to do same thing is like:
if (props[prop].UnitsType == DynamicBlockReferencePropertyUnitsType.Distance)
props[prop].Value = (double)dynPropsDict[prop];
else if (props[prop].PropertyTypeCode == 3)
props[prop].Value = (short)dynPropsDict[prop];
else
props[prop].Value = (string)dynPropsDict[prop];
props[prop] is the dynBlkRefProp so all I am saying is I only assign double, short, or string props.
maybe try dynBlkRefProp.Value = 114.0? (add the .0)