Type.DeclaringType Tulajdonság

Definíció

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:

A következőre érvényes:

Lásd még