Type.DeclaringType Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe o tipo que declara o tipo aninhado atual ou o parâmetro genérico do tipo.
public:
abstract property Type ^ DeclaringType { Type ^ get(); };
public:
virtual property Type ^ DeclaringType { Type ^ get(); };
public abstract Type DeclaringType { get; }
public override Type DeclaringType { get; }
member this.DeclaringType : Type
Public MustOverride ReadOnly Property DeclaringType As Type
Public Overrides ReadOnly Property DeclaringType As Type
Valor de Propriedade
Um objeto que Type representa o tipo envolvente, se o tipo atual for um tipo aninhado; ou a definição genérica do tipo, se o tipo atual for um parâmetro de tipo genérico; ou o tipo que declara o método genérico, se o tipo atual for um parâmetro de tipo de um método genérico; caso contrário, null.
Implementações
Exemplos
Este exemplo mostra o tipo declarador de um método numa classe derivada.
using System;
using System.Reflection;
public abstract class dtype
{
public abstract class MyClassA
{
public abstract int m();
}
public abstract class MyClassB : MyClassA
{
}
public static void Main(string[] args)
{
Console.WriteLine("The declaring type of m is {0}.",
typeof(MyClassB).GetMethod("m").DeclaringType);
}
}
/* The example produces the following output:
The declaring type of m is dtype+MyClassA.
*/
[<AbstractClass>]
type MyClassA() =
abstract m: unit -> int
[<AbstractClass>]
type MyClassB() =
inherit MyClassA()
printfn $"""The declaring type of m is {typeof<MyClassB>.GetMethod("m").DeclaringType}."""
(* The example produces the following output:
The declaring type of m is dtype+MyClassA.
*)
Imports System.Reflection
Public MustInherit Class dtype
Public MustInherit Class MyClassA
Public MustOverride Function m() As Integer
End Class
Public MustInherit Class MyClassB
Inherits MyClassA
End Class
Public Shared Sub Main()
Console.WriteLine("The declaring type of m is {0}.", _
GetType(MyClassB).GetMethod("m").DeclaringType)
End Sub
End Class
Observações
Se o objeto atual Type representa um parâmetro de tipo genérico, esta propriedade devolve a definição genérica do tipo.
Se o objeto atual Type representa um parâmetro de tipo de um método genérico, esta propriedade devolve o tipo que contém a definição genérica do método. Se o tipo for genérico, a definição genérica do tipo é devolvida. Ou seja, o seguinte código devolve a definição do tipo genérico da List<T> classe genérica, que contém o ConvertAll método genérico:
Type t = typeof(List<string>).GetMethod("ConvertAll").GetGenericArguments()[0].DeclaringType;
let t = typeof<ResizeArray<string>>.GetMethod("ConvertAll").GetGenericArguments().[0].DeclaringType
Dim t As Type = GetType(List(Of String)).GetMethod("ConvertAll").GetGenericArguments()(0).DeclaringType
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, as DeclaringType propriedades e DeclaringMethod identificam a definição genérica de tipo ou definição genérica de método onde o parâmetro genérico foi originalmente definido:
Se a DeclaringMethod propriedade devolver um MethodInfo, isso MethodInfo representa uma definição genérica de método, e o objeto atual Type representa um parâmetro de tipo dessa definição genérica de método.
Se a DeclaringMethod propriedade devolver
null, então a DeclaringType propriedade devolve sempre um Type objeto que representa uma definição genérica de tipo, e o objeto atual Type representa um parâmetro de tipo dessa definição genérica.Obter a DeclaringType propriedade num tipo cuja IsGenericParameter propriedade é
falselança um InvalidOperationException.