Conversion between Tuple<T1,T2> and KeyValuePair<T1, T2>

Viewed 1791

Is there any built in conversion or cast between KeyValuePair<T1, T2> and Tuple<T1, T2>?

I know this would be a trivial extension method:

public static KeyValuePair<T1, T2> ToPair<T1, T2>(this Tuple<T1, T2> source)
{
    return new KeyValuePair<T1, T2>(source.Item1, source.Item2);
}

public static Tuple<T1, T2> ToTuple<T1, T2>(this KeyValuePair<T1, T2> source)
{
    return Tuple.Create(source.Key, source.Value);
}

But since objects can be used for similar purposes (especially since KeyValuePair<> was often used in place of a 2 element Tuple<> until it's addition to C#4.0), I was wondering if such a converter was already built into the framework?

Reason I ask is I am working with an older library (targeting .NET 3.5) that used KeyValuePair<> in many places that a Tuple might be more appropriate, and I want to use Tuple<> in the new code. so I'm trying to figure out if I can just cast or convert the return kvp values from these methods to Tuple or if I need to define my own conversion (or change the older code).

1 Answers
Related