(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ITypeDescriptorContext-Schnittstelle

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

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)

[ComVisibleAttribute(true)]
public interface ITypeDescriptorContext : IServiceProvider

Der ITypeDescriptorContext-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche EigenschaftContainerRuft den Container ab, der diese TypeDescriptor-Anforderung darstellt.
Öffentliche EigenschaftInstanceRuft das Objekt ab, das mit dieser Typdeskriptoranforderung verbunden ist.
Öffentliche EigenschaftPropertyDescriptorRuft den PropertyDescriptor ab, der dem angegebenen Kontextelement zugeordnet ist.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeGetServiceRuft das Dienstobjekt des angegebenen Typs ab. (Von IServiceProvider geerbt.)
Öffentliche MethodeOnComponentChangedLöst das ComponentChanged-Ereignis aus.
Öffentliche MethodeOnComponentChangingLöst das ComponentChanging-Ereignis aus.
Zum Seitenanfang

Die ITypeDescriptorContext-Schnittstelle stellt Kontextinformationen über eine Komponente bereit. ITypeDescriptorContext wird in der Regel zur Entwurfszeit verwendet, um Informationen über einen Entwurfszeitcontainer bereitzustellen. Diese Schnittstelle wird im Allgemeinen in der Typkonvertierung verwendet. Ausführlichere Informationen finden Sie unter TypeConverter.

HinweisHinweis

Beim Entwerfen eines Typkonverters darf nicht vorausgesetzt werden, dass diese Schnittstelle vorhanden ist. Wenn eine bestimmte Schnittstelle, Eigenschaft oder ein bestimmter Dienst erforderlich, aber nicht verfügbar ist, sollte der Typkonverter keine Ausnahme auslösen, sondern null zurückgeben. Berücksichtigen Sie, dass auch die Eigenschaften dieser Schnittstelle jederzeit null zurückgeben können.

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


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;
            }
        }
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft