Type.DeclaringType Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar den typ som deklarerar den aktuella kapslade typen eller den generiska typparametern.
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
Egenskapsvärde
Ett Type objekt som representerar den omslutande typen, om den aktuella typen är en kapslad typ, eller den generiska typdefinitionen, om den aktuella typen är en typparameter av en generisk typ, eller den typ som deklarerar den generiska metoden, om den aktuella typen är en typparameter för en generisk metod, nullannars .
Implementeringar
Exempel
I det här exemplet visas deklareringstypen för en metod i en härledd klass.
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
Kommentarer
Om det aktuella Type objektet representerar en typparameter av en allmän typ returnerar den här egenskapen den generiska typdefinitionen.
Om det aktuella Type objektet representerar en typparameter för en generisk metod returnerar den här egenskapen den typ som innehåller den generiska metoddefinitionen. Om typen är generisk returneras den generiska typdefinitionen. Följande kod returnerar den generiska typdefinitionen för den List<T> generiska klassen, som innehåller den ConvertAll generiska metoden:
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
Om den aktuella Type representerar en typparameter i definitionen av en generisk typ eller generisk metod identifierar DeclaringType egenskaperna och DeclaringMethod den generiska typdefinitionen eller den generiska metoddefinition där den generiska typparametern ursprungligen definierades:
Om egenskapen DeclaringMethod returnerar en MethodInfo, representerar det MethodInfo en allmän metoddefinition och det aktuella Type objektet representerar en typparameter för den generiska metoddefinitionen.
Om egenskapen DeclaringMethod returnerar returnerar
nullDeclaringType egenskapen alltid ett Type objekt som representerar en allmän typdefinition, och det aktuella Type objektet representerar en typparameter av den generiska typdefinitionen.Hämtar egenskapen på DeclaringType en typ vars IsGenericParameter egenskap
falsegenererar en InvalidOperationException.