Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек.
Когда начали делать .Net Native то прежде всего нужно было раздробить библиотеки, что бы проще было собирать.
В .Net Core для облаков тоже нужен минимум библиотек.
Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений
S>Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек. S>Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений
Применяется к
.NET Core
3.0 Preview 7 2.2 2.1 2.0 1.1 1.0
.NET Standard
2.1 Preview 2.0 1.6 1.5 1.4 1.3 1.2 1.1 1.0
Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен?
И как он может быть исключён, если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали:
IB>Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен? IB>И как он будет быть исключён если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?
TypeInfo немножко поудобнее в использовании, чем Type.
Но для работы с TypeInfo нужно загрузить сборку, в которой находится тип, а для Type достаточно иметь Reflection-Only Load.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
IB>>Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен? IB>>И как он будет быть исключён если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?
S>TypeInfo немножко поудобнее в использовании, чем Type.
Дело наверное не только удобстве. Кому не удобно сами пишут удобные обёртки над Type для себя или пользуются сторонними обёртками. И если цель была в повышении удобства, можно было расширить класс Type, вместо создания TypeInfo.
S>Но для работы с TypeInfo нужно загрузить сборку, в которой находится тип, а для Type достаточно иметь Reflection-Only Load.
Так получается, что как раз TypeInfo тянет за собой дополнительные зависимости, а не Type. Не понятно что имеется ввиду в этом сообщении
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали:
S>>Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек. S>>Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений
IB>Здесь написано что класс Type
IB>
IB>Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен? IB>И как он может быть исключён, если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?
А разве я говорил об исключении? Я говорил об уменьшении функционала и перенос его в TypeInfo
Я когда работал с 1.1 Они кучу функционала убрали из Type. Доступ к ним был через раширения GetTypeInfo
public ИнформацияОТипеПараметра(Type type)
{
var TI = type.GetTypeInfo();
IsByRef = TI.IsByRef;
IsGenericType = (TI.IsGenericType && TI.IsGenericTypeDefinition) || TI.ContainsGenericParameters;
if (IsByRef)
{
Тип = type.GetElementType();
TI = Тип.GetTypeInfo();
}
else
Тип = type;
IsValue = TI.IsValueType;
if (IsValue)
{
УровеньИерархии = 0;
if (TI.IsGenericType && TI.GetGenericTypeDefinition() == typeof(Nullable<>))
{
IsNullable = true;
Тип = TI.GenericTypeArguments[0];
}
}
else
УровеньИерархии = НайтиУровень(0, Тип);
}
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, igor-booch, Вы писали:
S>>TypeInfo немножко поудобнее в использовании, чем Type. IB>Дело наверное не только удобстве. Кому не удобно сами пишут удобные обёртки над Type для себя или пользуются сторонними обёртками. И если цель была в повышении удобства, можно было расширить класс Type, вместо создания TypeInfo.
Не так написал в предыдущем сообщении.
По большому счету, вся эта кухня появилась только ради AOT-компиляторов.
TypeInfo являет собой саму декларацию типа, в то время как "нормальный" Type будет либо ссылаться на нее либо вообще не иметь к ней доступа (AOT).
Сейчас это такая смесь оптимизации, частичной совместимости и наследия, и какого-то стройного дизайна тут уже нет.
Здравствуйте, igor-booch, Вы писали:
IB>Зачем они нужны? Метод GetTypeInfo(Type) возвращает экземпляр класса TypeInfo, который на первый взгляд повторяет класс Type.
Они не нужны. Это была тупиковая ветка развития изначально, сейчас всё вернулось на Type.