So I’ve run into a case where I have a class that can store either a string or a numeric value, and I want a single property to return one or the other (it would be a failure for both to be set). I’m using a custom generic class to deal with the numerics (so I can use signed, unsigned, and nullables), and will be storing the string in a separate variable.
In theory, if overloading could be done based on the return type, I could do this quite easily. But .NET currently disallows this. So I am wondering if there is some other really-far-out-there trick (outside of MSIL generation via Reflection.Emit) that could accomplish the same thing.
I’m open to ideas via delegates, pointer dereferencing, generics, mystical rites, etc. Also interested in any thoughts or pros/cons of such possibilities as a learning tool. If using a standard Object is the only way to achieve what I want, then that’s fine with me. But It’s difficult to find the correct set of keywords to hunt down this kind of capability on Google, so I thought I’d ask here before I moved on to doing something else on the project.
I don’t see how using anything other than
Objectwould work, for a simple property. Imagine you’re the caller – what would you expect the declared type of the property to be? What type of value would you try to assign the expression to?If you really have to have a single property which can return various different types,
Objectsounds like the way to go.