Type.DeclaringType Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt het type opgehaald dat het huidige geneste type of de parameter algemeen declareert.
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
Waarde van eigenschap
Een Type object dat het omsluittype vertegenwoordigt, als het huidige type een genest type is, of de algemene typedefinitie, als het huidige type een typeparameter is van een algemeen type; of het type dat de algemene methode declareert, als het huidige type een typeparameter van een algemene methode is, nullanders.
Implementeringen
Voorbeelden
In dit voorbeeld wordt het declaratietype van een methode in een afgeleide klasse weergegeven.
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
Opmerkingen
Als het huidige Type object een typeparameter van een algemeen type vertegenwoordigt, retourneert deze eigenschap de algemene typedefinitie.
Als het huidige Type object een typeparameter van een algemene methode vertegenwoordigt, retourneert deze eigenschap het type dat de algemene methodedefinitie bevat. Als het type algemeen is, wordt de algemene typedefinitie geretourneerd. Dat wil gezegd, retourneert de volgende code de algemene typedefinitie van de List<T> algemene klasse, die de ConvertAll algemene methode bevat:
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
Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of een algemene methode, identificeren de DeclaringType en DeclaringMethod eigenschappen de algemene typedefinitie of algemene methodedefinitie waarbij de algemene typeparameter oorspronkelijk is gedefinieerd:
Als de DeclaringMethod eigenschap een MethodInfo, die MethodInfo een algemene methodedefinitie vertegenwoordigt, retourneert en het huidige Type object een typeparameter van die algemene methodedefinitie vertegenwoordigt.
Als de DeclaringMethod eigenschap retourneert, retourneert
nullde DeclaringType eigenschap altijd een Type object dat een algemene typedefinitie vertegenwoordigt en het huidige Type object een typeparameter van die algemene typedefinitie vertegenwoordigt.DeclaringType De eigenschap ophalen op een type waarvan IsGenericParameter de eigenschap een
falseInvalidOperationException.