Nebenbei bemerkt: Ihr Code für die bedingte Kompilierung wird die Programmierer, die darauf stoßen, frustrieren.
Bearbeitet, aufgrund von Kommentaren
Es ist wahrscheinlich besser, Ihre eigene Klasse zu schreiben, damit Sie garantieren können, was sie tun wird, und Sie haben keine seltsamen Signatur- oder Vererbungsprobleme:
public class Pair<TSource, TResult>
{
public TSource Source { get; set; }
public TResult Result { get; set; }
public Pair() {}
public Pair(TSource source, TResult result)
{
Source = source;
Result = result;
}
// Perhaps override Equals() and GetHashCode() as well
}
Wie immer ist es gut abzuwägen, ob man die eingebauten Funktionen nutzt oder seinen eigenen Code entwickelt. Im Allgemeinen bedeutet das, dass Sie sich fragen: "Ist es für mich in Ordnung, diesen Code zu pflegen und zu unterstützen?" im Gegensatz zu "Erfüllt der Code die Anforderungen, die ich an ihn stelle?"
Da in diesem Fall nicht garantiert werden kann, dass Sie Tuple<T1, T2>
Ich würde einfach ein eigenes, einfaches Programm schreiben, damit andere Entwickler aufatmen können :)