Compartilhar via


Type.DeclaringType Propriedade

Definição

Obtém o tipo que declara o tipo aninhado atual ou o parâmetro de tipo genérico.

public:
 abstract property Type ^ DeclaringType { Type ^ get(); };
public:
 virtual property Type ^ DeclaringType { Type ^ get(); };
public abstract Type DeclaringType { get; }
public override 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 da propriedade

Um Type objeto que representa o tipo delimitador, se o tipo atual for um tipo aninhado; ou a definição de tipo genérico, se o tipo atual for um parâmetro de tipo de um 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 exibe o tipo de declaração de um método em uma 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

Comentários

Se o objeto atual Type representar um parâmetro de tipo de um tipo genérico, essa propriedade retornará a definição de tipo genérico.

Se o objeto atual Type representar um parâmetro de tipo de um método genérico, essa propriedade retornará o tipo que contém a definição de método genérico. Se o tipo for genérico, a definição de tipo genérico será retornada. Ou seja, o código a seguir retorna a definição de 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 representar um parâmetro de tipo na definição de um tipo genérico ou método genérico, as propriedades e DeclaringMethod propriedades identificarão DeclaringType a definição de tipo genérico ou a definição de método genérico em que o parâmetro de tipo genérico foi originalmente definido:

Aplica-se a

Confira também