C# TypeInfo GenericParameterAttributes
Description
TypeInfo GenericParameterAttributes
Gets a combination
of GenericParameterAttributes flags that describe the covariance and
special constraints of the current generic type parameter.
Syntax
TypeInfo.GenericParameterAttributes
has the following syntax.
public virtual GenericParameterAttributes GenericParameterAttributes { get; }
Example
using System;/* ww w.j a v a2 s . c om*/
using System.Reflection;
public interface ITest {}
public class Base {}
public class Test<T,U>
where T : Base, ITest
where U : class, new() {}
public class Derived : Base, ITest {}
public class Example
{
public static void Main()
{
Type def = typeof(Test<,>);
Console.WriteLine("\r\nExamining generic type {0}", def);
Type[] defparams = def.GetGenericArguments();
foreach (Type tp in defparams)
{
Console.WriteLine("\r\nType parameter: {0}", tp.Name);
Console.WriteLine("\t{0}", ListGenericParameterAttributes(tp));
}
}
private static string ListGenericParameterAttributes(Type t)
{
string retval;
GenericParameterAttributes gpa = t.GenericParameterAttributes;
GenericParameterAttributes variance = gpa & GenericParameterAttributes.VarianceMask;
if (variance == GenericParameterAttributes.None)
retval = "No variance flag;";
else
{
if ((variance & GenericParameterAttributes.Covariant) != 0)
retval = "Covariant;";
else
retval = "Contravariant;";
}
return retval;
}
}
The code above generates the following result.