Type.DeclaringType Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene il tipo che dichiara il tipo annidato corrente o il parametro di tipo generico.
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
Valore della proprietà
Oggetto Type che rappresenta il tipo di inclusione, se il tipo corrente è un tipo annidato oppure la definizione di tipo generico, se il tipo corrente è un parametro di tipo di un tipo generico oppure il tipo che dichiara il metodo generico, se il tipo corrente è un parametro di tipo di un metodo generico; in caso contrario, null.
Implementazioni
Esempio
In questo esempio viene visualizzato il tipo dichiarante di un metodo in una classe derivata.
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
Commenti
Se l'oggetto corrente Type rappresenta un parametro di tipo di un tipo generico, questa proprietà restituisce la definizione di tipo generico.
Se l'oggetto corrente Type rappresenta un parametro di tipo di un metodo generico, questa proprietà restituisce il tipo che contiene la definizione del metodo generico. Se il tipo è generico, viene restituita la definizione di tipo generico. Ovvero, il codice seguente restituisce la definizione di tipo generico della List<T> classe generica, che contiene il ConvertAll metodo generico:
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
Se l'oggetto corrente Type rappresenta un parametro di tipo nella definizione di un tipo generico o di un metodo generico, le DeclaringType proprietà e DeclaringMethod identificano la definizione del tipo generico o la definizione del metodo generico in cui è stato originariamente definito il parametro di tipo generico:
Se la DeclaringMethod proprietà restituisce un MethodInfooggetto , che MethodInfo rappresenta una definizione di metodo generico e l'oggetto corrente Type rappresenta un parametro di tipo della definizione del metodo generico.
Se la DeclaringMethod proprietà restituisce
null, la DeclaringType proprietà restituisce sempre un Type oggetto che rappresenta una definizione di tipo generico e l'oggetto corrente Type rappresenta un parametro di tipo di tale definizione di tipo generico.Recupero della DeclaringType proprietà su un tipo la cui IsGenericParameter proprietà viene
falsegenerata un'eccezione InvalidOperationException.