Auf Englisch lesen

Teilen über


InstanceDescriptor Klasse

Definition

Stellt die für das Erstellen einer Objektinstanz notwendigen Informationen bereit. Diese Klasse kann nicht vererbt werden.

C#
public sealed class InstanceDescriptor
Vererbung
InstanceDescriptor

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie einen Typkonverter verwenden, der durch die Verwendung von instance-Deskriptoren an der Codegenerierung beteiligt ist.

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

InstanceDescriptorkann Informationen speichern, die eine instance eines Objekts beschreiben. Diese Informationen können verwendet werden, um eine instance des Objekts zu erstellen.

Einige benutzerdefinierte Serialisierungsprogramme verwenden InstanceDescriptor , um serialisierbare Objekte darzustellen. Mehrere Methoden eines TypeDescriptor Verwendens InstanceDescriptor zum Darstellen oder Instanziieren von Objekten.

Ein InstanceDescriptor stellt die folgenden Member bereit:

  • Eine MemberInfo Eigenschaft, die dieses Objekt beschreibt.

  • Eine Arguments Eigenschaft, die aus den Konstruktorargumenten besteht, die zum Instanziieren dieses Objekts verwendet werden können.

  • Eine boolesche IsComplete Eigenschaft, die angibt, ob das Objekt vollständig durch die aktuellen Informationen dargestellt wird.

  • Eine Invoke Methode, mit der eine instance des dargestellten Objekts erstellt werden kann.

Konstruktoren

InstanceDescriptor(MemberInfo, ICollection)

Initialisiert eine neue Instanz der InstanceDescriptor-Klasse unter Verwendung der angegebenen Memberinformationen und Argumente.

InstanceDescriptor(MemberInfo, ICollection, Boolean)

Initialisiert eine neue Instanz der InstanceDescriptor-Klasse unter Verwendung der angegebenen Memberinformationen und Argumente sowie des Werts, der angibt, ob die angegebenen Informationen die Instanz vollständig beschreiben.

Eigenschaften

Arguments

Ruft eine Auflistung von Argumenten ab, mit der eine Instanz des Objekts neu erstellt werden kann, das der Deskriptor dieser Instanz darstellt.

IsComplete

Ruft einen Wert ab, der angibt, ob der Inhalt dieses InstanceDescriptor die Instanz vollständig beschreibt.

MemberInfo

Ruft die Memberinformationen ab, die die Instanz beschreiben, der dieser Deskriptor zugeordnet ist.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Invoke()

Ruft den Deskriptor dieser Instanz auf und gibt das vom Deskriptor beschriebene Objekt zurück.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Produkt Versionen
.NET 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