Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Informações
O tópico solicitado está sendo mostrado abaixo. No entanto, este tópico não está incluído nesta biblioteca.

Reflexão no .NET Framework para aplicativos da Windows Store

.NET Framework 4.5

A partir .NET Framework 4.5, o.NET Framework inclui um conjunto de tipos e membros de reflexão para uso em aplicativos de Windows Store . Esses tipos e membros estão disponíveis no .NET Framework completo assim como o .NET para aplicativos do Windows Storeno. Este documento explica as principais diferenças entre esses e suas contrapartes no .NET Framework 4 e versões anteriores.

Se você estiver criando um aplicativo de Windows Store , você deve usar os tipos e os membros de reflexão em .NET para aplicativos da Windows Store. Esses tipos e membros também estão disponíveis, mas não necessário, para uso em aplicativos de área de trabalho, assim que você pode usar o mesmo código para ambos os tipos de aplicativos.

Em .NET para aplicativos da Windows Store, a classe de TypeInfo contém algumas funcionalidades de classes do.NET Framework 4 Type . Um objeto de Type representa uma referência a uma definição do tipo, enquanto que um objeto de TypeInfo representa a definição de tipo própria. Isso permite manipular objetos de Type sem necessariamente exigir que o tempo de execução para carregar o assembly que referencia. Obtendo o objeto associado de TypeInfo força o assembly a ser carregado.

TypeInfo contém muitos dos membros disponíveis em Type, e muitas das propriedades de reflexão nas coleções de retorno de .NET para aplicativos da Windows Store de TypeInfo objeto. Para obter um objeto de TypeInfo de um objeto de Type , use o método de GetTypeInfo .

Em .NET para aplicativos da Windows Store, use as propriedades de reflexão que as coleções de retorno de IEnumerable<T> em vez dos métodos que as matrizes de retorno. Os contextos de reflexão podem implementar o percurso lento dessas coleções grandes para os assemblies ou tipos.

As propriedades de reflexão retornem apenas os métodos declarados em um objeto específico em vez de desviar da árvore de herança. Além disso, não usam parâmetros de BindingFlags filtragem. Em vez disso, a filtragem ocorre no código de usuário, usando consultas LINQ nas coleções retornados. Para os objetos de reflexão que se originam com o tempo de execução (por exemplo, como o resultado de typeof(Object)), percorrer a árvore de herança é realizado melhor usando os métodos auxiliares da classe de RuntimeReflectionExtensions . Os consumidores de objetos personalizados em contextos de reflexão não podem usar esses métodos, e devem atravessar a árvore de herança próprios.

Em um aplicativo de Windows Store , o acesso para alguns tipos do.NET Framework e os membros são estritos. Por exemplo, você não pode chamar os métodos do.NET Framework que não são incluídos em .NET para aplicativos da Windows Store, usando um objeto de MethodInfo . Além disso, determinados tipos e membros que não são considerados seguro dentro do contexto de um aplicativo de Windows Store são bloqueados, como são Marshal e os membros de WindowsRuntimeMarshal . Essa restrição afeta apenas os tipos e membros do .NET Framework; você pode chamar o código ou o código de terceiros como faria normalmente.

Este exemplo usa os tipos de reflexão e os membros de .NET para aplicativos da Windows Store para recuperar os métodos e as propriedades de Calendar , inclusive métodos e propriedades herdadas. Para executar esse código, cole-o no arquivo de código de uma página de Windows Store que contém Windows.UI.Xaml.Controls.Textblock um controle chamado textblock1.


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Navigation;
using System.Reflection;
using System.Globalization;
using System.Text;


namespace Reflection
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
           this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            TypeInfo t = typeof(Calendar).GetTypeInfo();
            IEnumerable<PropertyInfo> pList = t.DeclaredProperties;
            IEnumerable<MethodInfo> mList = t.DeclaredMethods;

            StringBuilder sb = new StringBuilder();

            sb.Append("Properties:");
            foreach (PropertyInfo p in pList)
            {

                sb.Append("\n" + p.DeclaringType.Name + ": " + p.Name);
            }
            sb.Append("\nMethods:");
            foreach (MethodInfo m in mList)
            {
                sb.Append("\n" + m.DeclaringType.Name + ": " + m.Name);
            }

            textblock1.Text = sb.ToString();

        }
    }
}


Contribuições da comunidade

Mostrar:
© 2015 Microsoft