Можно использовать generic, например сделать extension который возвращает переменную вашего типа с дефолтным значением или инфо о типе.
dotnetfiddle
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var list1 = new List<string>();
var list2 = new List<double>();
var list3 = new List<MyCustomType>();
var var1 = list1.MakeDefault();
var var2 = list2.MakeDefault();
var var3 = list3.MakeDefault();
Console.WriteLine($"{var1}");
Console.WriteLine($"{var2}");
Console.WriteLine($"{var3}");
}
}
public static class GenericListExtensions
{
public static Tuple<T, Type> MakeDefault<T>(this List<T> list)
{
return Tuple.Create<T, Type>(default(T), typeof(T));
}
}
public class MyCustomType {}