Type.DeclaringType Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri azt a típust, amely az aktuális beágyazott típust vagy általános típusparamétert deklarálja.
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
Tulajdonság értéke
A Type beágyazási típust képviselő objektum, ha az aktuális típus beágyazott típus; vagy az általános típusdefiníció, ha az aktuális típus egy általános típus típusparamétere; vagy az általános metódust deklaráló típus, ha az aktuális típus egy általános metódus típusparamétere; egyébként null.
Megvalósítás
Példák
Ez a példa egy metódus deklarálási típusát jeleníti meg egy származtatott osztályban.
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
Megjegyzések
Ha az aktuális Type objektum egy általános típusú típusparamétert jelöl, ez a tulajdonság az általános típusdefiníciót adja vissza.
Ha az aktuális Type objektum egy általános metódus típusparaméterét jelöli, akkor ez a tulajdonság az általános metódusdefiníciót tartalmazó típust adja vissza. Ha a típus általános, a rendszer visszaadja az általános típusdefiníciót. A következő kód az általános osztály általános típusdefinícióját List<T> adja vissza, amely az általános metódust ConvertAll tartalmazza:
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
Ha az áram Type egy típusparamétert jelöl egy általános típus vagy általános metódus definíciójában, a tulajdonságok és DeclaringType tulajdonságok DeclaringMethod azonosítják azt az általános típusdefiníciót vagy általános metódusdefiníciót, amelyben az általános típusparaméter eredetileg definiálva lett:
Ha a DeclaringMethod tulajdonság egy MethodInfoMethodInfo általános metódusdefiníciót ad vissza, az aktuális Type objektum pedig az adott általános metódusdefiníció típusparaméterét jelöli.
Ha a DeclaringMethod tulajdonság visszaadja
null, akkor a DeclaringType tulajdonság mindig egy Type általános típusdefiníciót képviselő objektumot ad vissza, az aktuális Type objektum pedig az adott általános típusdefiníció típusparaméterét.DeclaringType A tulajdonság lekérése olyan típusra, amelynek IsGenericParameter a tulajdonsága
falseInvalidOperationExceptionegy .