Если у вас есть экземпляр Tuple, вы можете получить параметры универсального типа через отражение:
var x = Tuple.Create<int, string>(0, "test");
var y = x.GetType().GetGenericArguments();
y[0].Name = "System.Int32";
Вы можете получить эту же информацию во время компиляции, используя "typeof ()", или во время выполнения.используя отражение, вот так:
public Tuple<string, double> DoSomething()
{
var y = typeof(Tuple<string, double>).GetGenericArguments();
var z = MethodBase.GetCurrentMethod().ReturnType.GetGenericArguments();
}
Я не думаю, что это действительно поможет вам;Вы не можете связать информацию о типе, полученную во время выполнения, с общими параметрами в типе компиляции, поэтому вы не экономите много времени.Вам все равно придется указывать где-то несколько раз типы данных.
Ответ Криса Шейна (метод Field<T>
) действительно является подходящим способом.