Зачем нужны IntrospectionExtensions?
От: igor-booch Россия  
Дата: 12.07.19 14:34
Оценка:
Зачем они нужны? Метод GetTypeInfo(Type) возвращает экземпляр класса TypeInfo, который на первый взгляд повторяет класс Type.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Отредактировано 12.07.2019 14:35 igor-booch . Предыдущая версия .
Re: Зачем нужны IntrospectionExtensions?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 12.07.19 14:45
Оценка: +1
Здравствуйте, igor-booch, Вы писали:

Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек.
Когда начали делать .Net Native то прежде всего нужно было раздробить библиотеки, что бы проще было собирать.
В .Net Core для облаков тоже нужен минимум библиотек.
Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений

Тот же Xml выпилили из всех основных библиотек. Тот же Wcf так и не перенесли
https://devblogs.microsoft.com/dotnet/net-core-is-the-future-of-net/
и солнце б утром не вставало, когда бы не было меня
Отредактировано 12.07.2019 16:09 Serginio1 . Предыдущая версия .
Re: Зачем нужны IntrospectionExtensions?
От: vmpire Россия  
Дата: 12.07.19 15:20
Оценка: 4 (1)
Здравствуйте, igor-booch, Вы писали:

IB>Зачем они нужны?


Всё же написано в описании типа, и зачем он и как появился.
Re[2]: Зачем нужны IntrospectionExtensions?
От: igor-booch Россия  
Дата: 02.08.19 07:46
Оценка:
S>Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек.
S>Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений

Здесь написано что класс Type

Применяется к
.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
Отредактировано 02.08.2019 8:30 igor-booch . Предыдущая версия . Еще …
Отредактировано 02.08.2019 7:55 igor-booch . Предыдущая версия .
Отредактировано 02.08.2019 7:54 igor-booch . Предыдущая версия .
Re[2]: Зачем нужны IntrospectionExtensions?
От: igor-booch Россия  
Дата: 02.08.19 07:47
Оценка:
IB>>Зачем они нужны?

V>Всё же написано в описании типа, и зачем он и как появился.


http://rsdn.org/forum/dotnet/7508979.1
Автор: igor-booch
Дата: 02.08.19
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[3]: Зачем нужны IntrospectionExtensions?
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.08.19 08:07
Оценка:
Здравствуйте, igor-booch, Вы писали:

IB>Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен?

IB>И как он будет быть исключён если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?

TypeInfo немножко поудобнее в использовании, чем Type.
Но для работы с TypeInfo нужно загрузить сборку, в которой находится тип, а для Type достаточно иметь Reflection-Only Load.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Зачем нужны IntrospectionExtensions?
От: igor-booch Россия  
Дата: 02.08.19 08:40
Оценка:
IB>>Вы имеете ввиду, что в следующих версиях NET Standard (и может быть .NET Core) класс Type класс будет исключен?
IB>>И как он будет быть исключён если метод GetTypeInfo расширяет класс Type? Будут другие методы для получения TypeInfo?

S>TypeInfo немножко поудобнее в использовании, чем Type.

Дело наверное не только удобстве. Кому не удобно сами пишут удобные обёртки над Type для себя или пользуются сторонними обёртками. И если цель была в повышении удобства, можно было расширить класс Type, вместо создания TypeInfo.


S>Но для работы с TypeInfo нужно загрузить сборку, в которой находится тип, а для Type достаточно иметь Reflection-Only Load.

Так получается, что как раз TypeInfo тянет за собой дополнительные зависимости, а не Type. Не понятно что имеется ввиду в этом сообщении
Автор: Serginio1
Дата: 12.07.19
.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[3]: Зачем нужны IntrospectionExtensions?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.08.19 10:39
Оценка:
Здравствуйте, igor-booch, Вы писали:

S>>Потому, что type содержит кучу методов, которые тащат за собой кучу библиотек.

S>>Поэтому в .NET Standard и начали дробить, и добавлять функционал за счет расширений

IB>Здесь написано что класс Type


IB>

IB>Применяется к
IB>.NET Core
IB>3.0 Preview 7 2.2 2.1 2.0 1.1 1.0
IB>.NET Standard
IB>2.1 Preview 2.0 1.6 1.5 1.4 1.3 1.2 1.1 1.0


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, Тип);


        }
и солнце б утром не вставало, когда бы не было меня
Отредактировано 02.08.2019 10:42 Serginio1 . Предыдущая версия .
Re[5]: Зачем нужны IntrospectionExtensions?
От: Mystic Artifact  
Дата: 06.08.19 06:03
Оценка:
Здравствуйте, igor-booch, Вы писали:

S>>TypeInfo немножко поудобнее в использовании, чем Type.

IB>Дело наверное не только удобстве. Кому не удобно сами пишут удобные обёртки над Type для себя или пользуются сторонними обёртками. И если цель была в повышении удобства, можно было расширить класс Type, вместо создания TypeInfo.
Не так написал в предыдущем сообщении.
По большому счету, вся эта кухня появилась только ради AOT-компиляторов.
TypeInfo являет собой саму декларацию типа, в то время как "нормальный" Type будет либо ссылаться на нее либо вообще не иметь к ней доступа (AOT).
Сейчас это такая смесь оптимизации, частичной совместимости и наследия, и какого-то стройного дизайна тут уже нет.
Re: Зачем нужны IntrospectionExtensions?
От: Aquilaware  
Дата: 10.08.19 00:16
Оценка: 2 (1)
Здравствуйте, igor-booch, Вы писали:

IB>Зачем они нужны? Метод GetTypeInfo(Type) возвращает экземпляр класса TypeInfo, который на первый взгляд повторяет класс Type.



Они не нужны. Это была тупиковая ветка развития изначально, сейчас всё вернулось на Type.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.