Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica a política a um tipo, se ela foi aplicada ao tipo recipiente ou do método.
Syntax
<ImpliesType Name="type_name"
Activate="policy_type"
Browse="policy_type"
Dynamic="policy_type"
Serialize="policy_type"
DataContractSerializer="policy_setting"
DataContractJsonSerializer="policy_setting"
XmlSerializer="policy_setting"
MarshalObject="policy_setting"
MarshalDelegate="policy_setting"
MarshalStructure="policy_setting" />
Atributos e elementos
As seções a seguir descrevem atributos, elementos filho e elementos pai.
Atributos
| Atributo | Tipo de atributo | Descrição |
|---|---|---|
Name |
Geral | Atributo obrigatório. Especifica o nome do tipo. |
Activate |
Reflexão | Atributo opcional . Controla o acesso de runtime a construtores para habilitar a ativação de instâncias. |
Browse |
Reflexão | Atributo opcional . Controla a consulta para obter informações sobre elementos do programa, mas não permite qualquer acesso de runtime. |
Dynamic |
Reflexão | Atributo opcional . Controla o acesso a todos os tipos de membro ao runtime, incluindo construtores, métodos, campos, propriedades e eventos, habilitando a programação dinâmica. |
Serialize |
Serialização | Atributo opcional . Controla o acesso ao runtime para construtores, campos e propriedades para habilitar a serialização e desserialização das instâncias por bibliotecas como o serializador Newtonsoft JSON. |
DataContractSerializer |
Serialização | Atributo opcional . Controla a política de serialização que usa a classe System.Runtime.Serialization.DataContractSerializer. |
DataContractJsonSerializer |
Serialização | Atributo opcional . Controla a política de serialização JSON que usa a classe System.Runtime.Serialization.Json.DataContractJsonSerializer. |
XmlSerializer |
Serialização | Atributo opcional . Controla a política de serialização XML que usa a classe System.Xml.Serialization.XmlSerializer. |
MarshalObject |
Interoperabilidade | Atributo opcional . Política de controles de marshaling de tipos de referência para o Windows Runtime e COM. |
MarshalDelegate |
Interoperabilidade | Atributo opcional . Controla a diretiva de marshaling de tipos delegados como ponteiros de função para código nativo. |
MarshalStructure |
Interoperabilidade | Atributo opcional . Controla a política de marshaling de tipos de valor para código nativo. |
Atributo de nome
| Valor | Descrição |
|---|---|
| type_name | O nome do tipo. Se o tipo representado por este elemento <ImpliesType> estiver localizado no mesmo namespace contendo seu elemento <Type>, o type_name poderá incluir o nome do tipo sem o respectivo namespace. Caso contrário, o type_name deverá incluir o nome do tipo totalmente qualificado. |
Todos os outros atributos
| Valor | Descrição |
|---|---|
| policy_setting | A configuração a ser aplicada a este tipo de política. Os valores possíveis são All, Auto, Excluded, Public, PublicAndInternal, Required Public, Required PublicAndInternal e Required All. Para obter mais informações, consulte Configurações da política da diretiva de runtime. |
Elementos filho
Nenhum.
Elementos pai
| Elemento | Descrição |
|---|---|
| <Tipo> | Aplica a política de reflexão a um tipo e todos os seus membros. |
| <TypeInstantiation> | Aplica a política de reflexão a um tipo genérico construído e todos os seus membros. |
| <Método> | Aplica a política de reflexão a um método. |
Comentários
O elemento <ImpliesType> destina-se principalmente para uso por bibliotecas. Ele aborda o cenário a seguir:
Se uma rotina precisa refletir em um tipo, ela necessariamente precisa refletir no segundo tipo.
Os metadados para a instanciação implícita do segundo tipo não estão disponíveis, pois a análise estática não indica que é necessário.
Geralmente, os dois tipos são instanciações genéricas com argumentos de tipo compartilhados.
O elemento <ImpliesType> foi definido presumindo que a necessidade de reflexão no tipo especificado pelo seu elemento pai implica a necessidade de reflexão no tipo especificado pelo elemento <ImpliesType>. Por exemplo, as seguintes diretivas de reflexão aplicam-se a dois tipos, Explicit<T> e Implicit<T>.
<Type Name="Explicit{ET}">
<ImpliesType Name="Implicit{ET}" Dynamic="Required Public" />
</Type>
Essa diretiva não tem efeito, a menos que uma instanciação de Explicit tenha uma configuração de política Dynamic definida. Por exemplo, se for o caso de Explicit<Int32>, Implicit<Int32> é instanciado com seu membros públicos enraizados e seus metadados são disponibilizados por programação dinâmica.
Veja a seguir um exemplo real que se aplica a pelo menos um serializador. As diretivas capturam o requisito de que a reflexão sobre algo digitado como IList<algo> também envolve reflexão sobre o tipo List<algo> correspondente sem exigir nenhuma anotação por aplicativo.
<Type Name="System.Collections.Generic.IList{T}">
<ImpliesType Name="System.Collections.Generic.List{T}" Serialize="Public" />
</Type>
O elemento <ImpliesType> também pode aparecer em um elemento <Method>, pois em alguns casos instanciar um método genérico implica refletir em uma instanciação de um tipo. Por exemplo, imagine um método genérico IEnumerable<T> MakeEnumerable<T>(string spelling, T defaultValue) que uma determinada biblioteca acessará dinamicamente juntamente com os tipos List<T> e Array associados. Isso pode ser expressado como:
<Type Name="MyType">
<Method Name="MakeEnumerable{T}" Signature="(System.String, T)" Dynamic="Included">
<ImpliesType Name="T[]" Dynamic="Public" />
<ImpliesType Name="System.Collections.Generic.List{T}" Dynamic="Public" />
</Method>
</Type>