то, Почему я хочу облегченную версию его, - то, потому что я не доволен установкой вина на 208,2 МБ к моему плохому компьютеру.
208,2 МБ включает основную Винную платформу, необходимую для выполнения любого Приложения Windows или установщика, неважно, как маленький или большой. Вы рискуете своим приложением, не работающим или устанавливающим, если Вы не устанавливаете основную платформу. Можно попытаться удалить любой -doc
пакеты, и т.д. после приложение в установленном и хорошо работать.
Кратко, нет, нет "легкой" версии Вина.
public static List<T> CreateCompatibleList<T> (T t)
{
return new List<T> () ;
}
var x = 10 ;
var l = CreateCompatibleList (x) ;
Вы пытаетесь заставить .Net установить общий тип с помощью оператора времени выполнения. Как вы знаете, это не сработает. Типы Generics должны быть установлены во время компиляции.
Определение универсальных шаблонов выполняется в C # следующим образом:
var someList = new List<int>();
Вы можете не определять универсальные шаблоны следующим образом:
var x = 1;
var someType = typeof(x);
var someList = new List<someType>();
, потому что вы указываете тип во время выполнения в в этом случае не время компиляции. C # не поддерживает это.
Вы не можете сделать это точно так, как вы просите, но с небольшим отражение, вы можете сделать то же самое
Type genericType = typeof(List<>);
Type[] type = new Type[] { typeof(int) };
Type instanceType = genericType.MakeGenericType(type);
object instance = Activator.CreateInstance(instanceType );
var l = (List<int>)instance;