Информация об изменениях

Сообщение Re[51]: benchmark от 14.01.2017 18:01

Изменено 14.01.2017 18:04 Serginio1

Re[51]: benchmark
Здравствуйте, alex_public, Вы писали:



_>Всё равно не понятно пока. В .Net Native будет работать например автоматическая сериализация класса (оно же сейчас через рефлексию работает) или нет? Если да, то как (будет хранение метаданных рядом с объектом или нет)?


https://msdn.microsoft.com/ru-RU/library/dn600638(v=vs.110).aspx

TypeOf, использованный за пределами конструктора



Если вызвать конструктор этих классов сериализации и использовать ключевое слово C# typeof за пределами выражения, предоставленного для параметра Typeконструктора, как в следующем коде, компилятор .NET Native не может разрешить тип:


Type t = typeof(DataSet);
XmlSerializer ser = new XmlSerializer(t);


В этом случае необходимо указать тип в файле директив среды выполнения, добавив следующую запись:

<Type Name="DataSet" Browse="Required Public" />



Аналогичным образом, если вызвать конструктор XmlSerializer.XmlSerializer(Type, Type[]) и предоставить массив дополнительных объектов Type для сериализации, как показано в следующем коде, компилятору .NET Native не удается разрешить эти типы.


XmlSerializer xSerializer = new XmlSerializer(typeof(Teacher), 
                            new Type[] { typeof(Student), 
                                         typeof(Course), 
                                         typeof(Location) });

Необходимо добавить следующие записи для каждого типа в файл директив среды выполнения:

<Type Name="t" Browse="Required Public" />



Информацию о синтаксисе, используемом в примере, см. в разделе Элемент <Type> (машинный код .NET).

То есть не покатит как раньше. Нужна полная информация по типам.

Кроме того .NET Native не позволяет выполнить отражение через закрытые члены библиотеки классов платформы .NET Framework. Например, вызов свойства TypeInfo.DeclaredFields для извлечения полей типа библиотеки классов платформы .NET Framework возвращает только открытые или защищенные поля.

Re[51]: benchmark
Здравствуйте, alex_public, Вы писали:



_>Всё равно не понятно пока. В .Net Native будет работать например автоматическая сериализация класса (оно же сейчас через рефлексию работает) или нет? Если да, то как (будет хранение метаданных рядом с объектом или нет)?


https://msdn.microsoft.com/ru-RU/library/dn600638(v=vs.110).aspx

TypeOf, использованный за пределами конструктора



Если вызвать конструктор этих классов сериализации и использовать ключевое слово C# typeof за пределами выражения, предоставленного для параметра Typeконструктора, как в следующем коде, компилятор .NET Native не может разрешить тип:


Type t = typeof(DataSet);
XmlSerializer ser = new XmlSerializer(t);


В этом случае необходимо указать тип в файле директив среды выполнения, добавив следующую запись:

<Type Name="DataSet" Browse="Required Public" />



Аналогичным образом, если вызвать конструктор XmlSerializer.XmlSerializer(Type, Type[]) и предоставить массив дополнительных объектов Type для сериализации, как показано в следующем коде, компилятору .NET Native не удается разрешить эти типы.


XmlSerializer xSerializer = new XmlSerializer(typeof(Teacher), 
                            new Type[] { typeof(Student), 
                                         typeof(Course), 
                                         typeof(Location) });

Необходимо добавить следующие записи для каждого типа в файл директив среды выполнения:

<Type Name="t" Browse="Required Public" />



Информацию о синтаксисе, используемом в примере, см. в разделе Элемент <Type> (машинный код .NET).

То есть не покатит как раньше. Нужна полная информация по типам.

Кроме того .NET Native не позволяет выполнить отражение через закрытые члены библиотеки классов платформы .NET Framework. Например, вызов свойства TypeInfo.DeclaredFields для извлечения полей типа библиотеки классов платформы .NET Framework возвращает только открытые или защищенные поля.



&lt;Type&gt; Element (.NET Native)