I would like to build a generic class that I can use to implement Parameterized Properties in C#. The basic code I want is this:
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn oReturn = default(typeReturn);
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
But since typeReturn
is unknown/unrestricted the compiler is plotzing on the oReturn[oIndexer]
lines.
So how do I get this to work? My first (well, second) thought is to use Reflection in order to conditionally find the indexer (and raise an error if one is not found) or maybe use the where typeReturn: I???
modifier on the class definition. But if I use the modifier, what would I???
be?
Thanks for any solutions to this problem!
NOTE: How to find the Indexer correctly via Reflection is (supposedly) found here: http://www.dotnet247.com/247reference/msgs/3/16665.aspx (see last message).
EDIT: As Matthew pointed out below... I've got something of a typo/bug in the original description... My own fault, really... originally writing this just before bed! The code I want would look more like this:
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn[] oReturn;
public ParameterizedProperty(typeReturn[] oSource) {
oReturn = oSource;
}
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
...and what'll you'll bet that works!?
Er, not quite! Still complaining about typeIndexer
(wanting an "int-able" type), but much more betterer! I also added in a constructor to solve that pesky "I can't actually set oReturn to anything" problem =)
But even this doesn't look quite right (Arrays are always indexed by INTs, right? if so there's no need for typeIndexer)... I'll have to look at it again at wurk tomorrow =)