Makes no sense at all.
There is no such thing as "overloading", except ugly and very confusing terminology and some myths. (So many beginner have been confused! It's can be observed on CodeProject.) Methods are "overloaded" because nothing is overloaded. They are just different methods with identical names, nothing else. The calling code can compile just because in many (not all) cases a compiler can figure out which one to call by the number and types of actual parameters. And what to do with the properties of identical name and interface? How the compiler can figure out which member to use when you call (read or write) the property?
Your problem is the way you ask the question. Maybe there is a really interesting problem which may have a good solution, but good thing is sunken in your question because you are too much preoccupied with some misconception. You started to explain the purpose, and this is where you should put more effort. Explain the purpose as well as you can, in detail, then you can get a chance for much better advice.
[EDIT #1]
Actually, it looks like a very similar problem is already solved. In
Data Contract. Please see:
http://msdn.microsoft.com/en-us/library/ms733127.aspx[
^].
Please learn how it works, it will give you some good ideas. Learned? Now, pay attention for the
Name
property (named parameter) of the attribute
[DataMember]
. Looks somewhat familiar, isn't it?
[EDIT #2]
By the way, JSON serialization based on Data Contract is also available. Here:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx[
^].
Don't you think your problem is already solved?
—SA