Type.BaseType Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает тип, для которого текущий объект Type является непосредственным наследником.
public:
abstract property Type ^ BaseType { Type ^ get(); };
public abstract Type? BaseType { get; }
public abstract Type BaseType { get; }
member this.BaseType : Type
Public MustOverride ReadOnly Property BaseType As Type
Значение свойства
Объект Type, прямым наследником которого является текущий объект Type, или null
, если текущий объект Type
представляет класс Object или интерфейс.
Реализации
Примеры
В следующем примере демонстрируется использование BaseType Свойства.
using namespace System;
void main()
{
Type^ t = int::typeid;
Console::WriteLine( "{0} inherits from {1}.", t, t->BaseType );
}
using System;
class TestType
{
public static void Main()
{
Type t = typeof(int);
Console.WriteLine("{0} inherits from {1}.", t,t.BaseType);
}
}
Class TestType
Public Shared Sub Main()
Dim t As Type = GetType(Integer)
Console.WriteLine("{0} inherits from {1}.", t, t.BaseType)
End Sub
End Class
В следующем примере рекурсия используется для перечисления полной иерархии наследования для каждого класса, найденного в сборке. В примере определяется класс с именем, C
производный от класса с именем B
, который, в свою очередь, является производным от класса с именем A
.
using System;
public class Example
{
public static void Main()
{
foreach (var t in typeof(Example).Assembly.GetTypes()) {
Console.WriteLine("{0} derived from: ", t.FullName);
var derived = t;
do {
derived = derived.BaseType;
if (derived != null)
Console.WriteLine(" {0}", derived.FullName);
} while (derived != null);
Console.WriteLine();
}
}
}
public class A {}
public class B : A
{}
public class C : B
{}
// The example displays the following output:
// Example derived from:
// System.Object
//
// A derived from:
// System.Object
//
// B derived from:
// A
// System.Object
//
// C derived from:
// B
// A
// System.Object
Public Class Example
Public Shared Sub Main()
For Each t In GetType(Example).Assembly.GetTypes()
Console.WriteLine("{0} derived from: ", t.FullName)
Dim derived As Type = t
Do
derived = derived.BaseType
If derived IsNot Nothing Then
Console.WriteLine(" {0}", derived.FullName)
End If
Loop While derived IsNot Nothing
Console.WriteLine()
Next
End Sub
End Class
Public Class A
End Class
Public Class B : Inherits A
End Class
Public Class C : Inherits B
End Class
' The example displays the following output:
' Example derived from:
' System.Object
'
' A derived from:
' System.Object
'
' B derived from:
' A
' System.Object
'
' C derived from:
' B
' A
' System.Object
Комментарии
Базовый тип — это тип, от которого непосредственно наследуется текущий тип. Object — единственный тип, который не имеет базового типа, поэтому возвращается в null
качестве базового типа Object .
Интерфейсы наследуют от нуля или более базовых интерфейсов; Поэтому это свойство возвращает значение, null
Если Type
объект представляет интерфейс. Базовые интерфейсы можно определить с помощью GetInterfaces или FindInterfaces .
Если текущий объект Type представляет сконструированный универсальный тип, базовый тип отражает универсальные аргументы. В качестве примера рассмотрим следующие объявления:
generic<typename U> ref class B { };
generic<typename T> ref class C : B<T> { };
class B<U> { }
class C<T> : B<T> { }
Class B(Of U)
End Class
Class C(Of T)
Inherits B(Of T)
End Class
для сконструированного типа C<int>
( C(Of Integer)
в Visual Basic) BaseType свойство возвращает B<int>
.
Если Current Type представляет параметр типа определения универсального типа, BaseType возвращает ограничение класса, то есть класс, который должен наследовать параметр типа. Если ограничение класса отсутствует, BaseType возвращает System.Object .
Это свойство доступно только для чтения.