Dictionary is probably the best bet for now, if such a property exists. Might need to consider if there always is a function style relationship. Also, what if someone wants, say, anisotropy?
I would say getting this data structure right the first time would avoid confusion. Once that is done, we can see how this data can be translated for different solvers.
For the other nonlinearities, I believe it is best to make a ConstitutiveRelation class, and rename the current MaterialNonLinear to Simple hardening or some such. Other relations can have their own classes and use the different parameters as necessary.