Поделиться через


Type.DeclaringType Свойство

Определение

Возвращает тип, объявляющий текущий вложенный тип или параметр универсального типа.

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

Значение свойства

Type Объект, представляющий вложенный тип, если текущий тип является вложенным типом; или определение универсального типа, если текущий тип является параметром типа универсального типа; или типом, объявляющим универсальный метод, если текущий тип является параметром типа универсального метода; в противном случае null.

Реализации

Примеры

В этом примере отображается декларативный тип метода в производном классе.

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

Комментарии

Если текущий Type объект представляет параметр типа универсального типа, это свойство возвращает определение универсального типа.

Если текущий Type объект представляет параметр типа универсального метода, это свойство возвращает тип, содержащий определение универсального метода. Если тип является универсальным, возвращается определение универсального типа. То есть следующий код возвращает определение универсального типа универсального List<T> класса, содержащего универсальный ConvertAll метод:

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

Если текущий Type представляет параметр типа в определении универсального типа или универсального метода, то свойства DeclaringMethod определяют определение универсального типа или определение универсального метода, DeclaringType где изначально определен параметр универсального типа:

  • DeclaringMethod Если свойство возвращает MethodInfoзначение , представляющее MethodInfo определение универсального метода, а текущий Type объект представляет параметр типа этого универсального определения метода.

  • DeclaringMethod Если свойство возвращаетсяnull, DeclaringType то свойство всегда возвращает Type объект, представляющий определение универсального типа, и текущий Type объект представляет параметр типа определения универсального типа.

  • DeclaringType Получение свойства типа, свойство false которого IsGenericParameter вызывает исключениеInvalidOperationException.

Применяется к

См. также раздел