This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

Type.GenericParameterAttributes الخاصية

Visual Studio 2010

يحصل على مجموعة من GenericParameterAttributesعلامات التي تصف التباين المشترك والقيود الخاصة للعام الحالي نوع معلمة.

مساحة الاسم:  System
التجميع:  mscorlib (في mscorlib.dll)

public virtual GenericParameterAttributes GenericParameterAttributes { get; }

قيمة الخاصية

النوع: System.Reflection.GenericParameterAttributes
تمثل مجموعة من GenericParameterAttributesقيم التي توضح التباين المشترك و القيود الخاصة للعام الحالي اكتب المعلمة.

استثناء:شرط
InvalidOperationException

الحالي Typeالكائن هو غير عام اكتب المعلمة. أن هو، IsGenericParameterتقوم خاصية بإرجاع false.

NotSupportedException

الأسلوب الذي تم استدعاؤه هو غير معتمدة في الفئة الأساسية.

الالقيمة من القيم بالموضع هو تحتوي خاصية على علامات التي تصف ما إذا كان العام الحالي اكتب المعلمة هو متغير طردي، والإشارات التي تصف أية قيود خاص. استخدام GenericParameterAttributes.VarianceMaskقيمة إلى تحديد الإشارات التباين المشترك، واستخدام GenericParameterAttributes.SpecialConstraintMaskالقيمة إلى تحديد العلامات قيد.

للحصول على قائمة من الشروط ثابتة للمصطلحات المستخدمة في الانعكاس العام، راجع ملاحظات خاصيةIsGenericType .

يلي تعليمات برمجية المثال يعرف نوع عام Testبمعلمتين نوع التي تحتوي على قيود مختلفة. يتم فحص القيود استخدام عند تنفيذ البرنامج، GenericParameterAttributesخاصية و GetGenericParameterConstraintsالأسلوب.


using System;
using System.Reflection;

// Define a sample interface to use as an interface constraint.
public interface ITest {}

// Define a base type to use as a base class constraint.
public class Base {}

// Define the generic type to examine. The first generic type parameter,
// T, derives from the class Base and implements ITest. This demonstrates
// a base class constraint and an interface constraint. The second generic 
// type parameter, U, must be a reference type (class) and must have a 
// default constructor (new()). This demonstrates special constraints.
//
public class Test<T,U> 
    where T : Base, ITest 
    where U : class, new() {}

// Define a type that derives from Base and implements ITest. This type
// satisfies the constraints on T in class Test.
public class Derived : Base, ITest {}

public class Example
{
    public static void Main()
    {
        // To get the generic type definition, omit the type
        // arguments but retain the comma to indicate the number
        // of type arguments. 
        //
        Type def = typeof(Test<,>);
        Console.WriteLine("\r\nExamining generic type {0}", def);

        // Get the type parameters of the generic type definition,
        // and display them.
        //
        Type[] defparams = def.GetGenericArguments();
        foreach (Type tp in defparams)
        {
            Console.WriteLine("\r\nType parameter: {0}", tp.Name);
            Console.WriteLine("\t{0}", 
                ListGenericParameterAttributes(tp));

            // List the base class and interface constraints. The
            // constraints are returned in no particular order. If 
            // there are no class or interface constraints, an empty
            // array is returned.
            //
            Type[] tpConstraints = tp.GetGenericParameterConstraints();
            foreach (Type tpc in tpConstraints)
            {
                Console.WriteLine("\t{0}", tpc);
            }
        }
    }

    // List the variance and special constraint flags. 
    //
    private static string ListGenericParameterAttributes(Type t)
    {
        string retval;
        GenericParameterAttributes gpa = t.GenericParameterAttributes;
        GenericParameterAttributes variance = gpa & 
            GenericParameterAttributes.VarianceMask;

        // Select the variance flags.
        if (variance == GenericParameterAttributes.None)
            retval = "No variance flag;";
        else
        {
            if ((variance & GenericParameterAttributes.Covariant) != 0)
                retval = "Covariant;";
            else
                retval = "Contravariant;";
        }

        // Select 
        GenericParameterAttributes constraints = gpa & 
            GenericParameterAttributes.SpecialConstraintMask;

        if (constraints == GenericParameterAttributes.None)
            retval += " No special constraints";
        else
        {
            if ((constraints & GenericParameterAttributes.ReferenceTypeConstraint) != 0)
                retval += " ReferenceTypeConstraint";
            if ((constraints & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0)
                retval += " NotNullableValueTypeConstraint";
            if ((constraints & GenericParameterAttributes.DefaultConstructorConstraint) != 0)
                retval += " DefaultConstructorConstraint";
        }

        return retval;
    }
}
/* This example produces the following output:

Examining generic type Test`2[T,U]

Type parameter: T
        No variance flag; no special constraints.
        Base
        ITest

Type parameter: U
        No variance flag; ReferenceTypeConstraint DefaultConstructorConstraint
 */


نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0

NET Framework. Client Profile

مدعوم في: 4
إظهار: