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.