Auf Englisch lesen

Teilen über


ITypeDescriptorContext Schnittstelle

Definition

Stellt Kontextinformationen über eine Komponente bereit, z. B. den zugehörigen Container und Eigenschaftendeskriptor.

C#
public interface ITypeDescriptorContext : IServiceProvider
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface ITypeDescriptorContext : IServiceProvider
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die -Schnittstelle zur Unterstützung der ITypeDescriptorContext Typkonvertierung verwendet wird.

C#
namespace Microsoft.Samples.InstanceDescriptorSample
{
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design.Serialization;
    using System.Drawing;
    using System.Globalization;
    using System.Reflection;

    //  This sample shows how to support code generation for a custom type 
    //  of object using a type converter and InstanceDescriptor objects.

    //  To use this code, copy it to a file and add the file to a project. 
    //  Then add a component to the project and declare a Triangle field and 
    //  a public property with accessors for the Triangle field on the component.

    //  The Triangle property will be persisted using code generation.

    [TypeConverter(typeof(Triangle.TriangleConverter))]
    public class Triangle
    {
        // Triangle members.
        Point P1;
        Point P2;
        Point P3;

        public Point Point1 {
            get {
                return P1;
            }
            set {
                P1 = value;
            }
        }
        public Point Point2 {
            get 
            {
                return P2;
            }
            set 
            {
                P2 = value;
            }
        }
        public Point Point3 {
            get 
            {
                return P3;
            }
            set 
            {
                P3 = value;
            }
        }

        public Triangle(Point point1,Point point2,Point point3) {
            P1 = point1;
            P2 = point2;
            P3 = point3;
        }

        // A TypeConverter for the Triangle object.  Note that you can make it internal,
        //  private, or any scope you want and the designers will still be able to use
        //  it through the TypeDescriptor object.  This type converter provides the
        //  capability to convert to an InstanceDescriptor.  This object can be used by 
    //  the .NET Framework to generate source code that creates an instance of a 
    //  Triangle object.
        internal class TriangleConverter : TypeConverter
        {
            // This method overrides CanConvertTo from TypeConverter. This is called when someone
            //  wants to convert an instance of Triangle to another type.  Here,
            //  only conversion to an InstanceDescriptor is supported.
            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
            {
                if (destinationType == typeof(InstanceDescriptor))
                {
                    return true;
                }

                // Always call the base to see if it can perform the conversion.
                return base.CanConvertTo(context, destinationType);
            }

            // This code performs the actual conversion from a Triangle to an InstanceDescriptor.
            public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
            {
                if (destinationType == typeof(InstanceDescriptor))
                {
                    ConstructorInfo ci = typeof(Triangle).GetConstructor(new Type[]{typeof(Point),
                                                    typeof(Point),typeof(Point)});
                    Triangle t = (Triangle) value;
                    return new InstanceDescriptor(ci,new object[]{t.Point1,t.Point2,t.Point3});
                }

                // Always call base, even if you can't convert.
                return base.ConvertTo(context, culture, value, destinationType);
            }
        }
    }

    public class TestComponent : System.ComponentModel.Component 
    {
        Triangle myTriangle;

        public TestComponent() {
            myTriangle = new Triangle(
                new Point(5,5),
                new Point(10,10),
                new Point(1,8)
                );
        }

        public Triangle MyTriangle {
            get {
                return myTriangle;
            }
            set {
                myTriangle = value;
            }
        }
    }
}

Hinweise

Die ITypeDescriptorContext Schnittstelle stellt kontextbezogene Informationen zu einer Komponente bereit. ITypeDescriptorContext wird in der Regel zur Entwurfszeit verwendet, um Informationen zu einem Entwurfszeitcontainer bereitzustellen. Diese Schnittstelle wird häufig bei der Typkonvertierung verwendet. Ausführliche Informationen finden Sie unter TypeConverter.

Hinweis

Verlassen Sie sich beim Entwerfen eines Typkonverters nicht auf das Vorhandensein dieser Schnittstelle. Wenn eine bestimmte Schnittstelle, Eigenschaft oder Ein bestimmter Dienst erforderlich, aber nicht verfügbar ist, sollte der Typkonverter eine Ausnahme zurückgeben null und nicht auslösen. Die Eigenschaften dieser Schnittstelle können jederzeit zurückgegeben null werden, und Sie sollten dies planen.

Eigenschaften

Container

Ruft den Container ab, der diese TypeDescriptor-Anforderung darstellt.

Instance

Ruft das Objekt ab, das mit dieser Typdeskriptoranforderung verbunden ist.

PropertyDescriptor

Ruft den PropertyDescriptor ab, der dem angegebenen Kontextelement zugeordnet ist.

Methoden

GetService(Type)

Ruft das Dienstobjekt des angegebenen Typs ab.

(Geerbt von IServiceProvider)
OnComponentChanged()

Löst das ComponentChanged-Ereignis aus.

OnComponentChanging()

Löst das ComponentChanging-Ereignis aus.

Erweiterungsmethoden

GetKeyedService<T>(IServiceProvider, Object)

Ruft einen Dienst vom Typ T aus ab IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Ruft eine Enumeration von Diensten vom Typ serviceType aus ab IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Ruft eine Enumeration von Diensten vom Typ T aus ab IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Ruft einen Dienst vom Typ serviceType aus ab IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Ruft einen Dienst vom Typ T aus ab IServiceProvider.

CreateAsyncScope(IServiceProvider)

Erstellt eine neue AsyncServiceScope-Schnittstelle, die zum Auflösen von bereichsbezogenen Diensten verwendet werden kann.

CreateScope(IServiceProvider)

Erstellt eine neue IServiceScope-Schnittstelle, die zum Auflösen von bereichsbezogenen Diensten verwendet werden kann.

GetRequiredService(IServiceProvider, Type)

Ruft einen Dienst vom Typ serviceType aus der IServiceProvider-Schnittstelle ab.

GetRequiredService<T>(IServiceProvider)

Ruft einen Dienst vom Typ T aus der IServiceProvider-Schnittstelle ab.

GetService<T>(IServiceProvider)

Ruft einen Dienst vom Typ T aus der IServiceProvider-Schnittstelle ab.

GetServices(IServiceProvider, Type)

Ruft eine Enumeration von Diensten vom Typ serviceType aus der IServiceProvider-Schnittstelle ab.

GetServices<T>(IServiceProvider)

Ruft eine Enumeration von Diensten vom Typ T aus der IServiceProvider-Schnittstelle ab.

GetFakeLogCollector(IServiceProvider)

Ruft das -Objekt ab, das An die gefälschte Protokollierung gesendete Protokolldatensätze sammelt.

GetFakeRedactionCollector(IServiceProvider)

Ruft den gefälschten Redactorsammler instance aus dem Abhängigkeitsinjektionscontainer ab.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Weitere Informationen