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 namespace System;
using namespace System::Reflection;
public ref class dtype abstract
{
public:
ref class MyClassA abstract
{
public:
virtual int m() = 0;
};
ref class MyClassB abstract: public MyClassA{};
};
int main()
{
Console::WriteLine( "The declaring type of m is {0}.", dtype::MyClassB::typeid->GetMethod( "m" )->DeclaringType );
}
/* The example produces the following output:
The declaring type of m is dtype+MyClassA.
*/
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.
*/
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 = List<String^>::typeid->GetMethod("ConvertAll")->GetGenericArguments()[0]->DeclaringType;
Type t = typeof(List<string>).GetMethod("ConvertAll").GetGenericArguments()[0].DeclaringType;
Dim t As Type = GetType(List(Of String)).GetMethod("ConvertAll").GetGenericArguments()(0).DeclaringType
Если Current Type представляет параметр типа в определении универсального типа или универсального метода, DeclaringType DeclaringMethod Свойства и определяют определение универсального типа или определение универсального метода, в котором изначально был определен параметр универсального типа:
Если DeclaringMethod свойство возвращает объект MethodInfo , MethodInfo представляющий определение универсального метода, а текущий Type объект представляет параметр типа этого определения универсального метода.
Если DeclaringMethod свойство возвращает
null
, DeclaringType свойство всегда возвращает Type объект, представляющий определение универсального типа, а текущий Type объект представляет параметр типа этого определения универсального типа.Получение DeclaringType свойства для типа, свойство которого IsGenericParameter создает исключение
false
InvalidOperationException .