Опрос типов

Класс System. Type также позволяет запрашивать практически все атрибуты типа, включая модификатор доступа, является ли тип вложенным, его СОМ-свойства и т. д. Взгляните на этот код, использующий несколько обычных и демонстрационных типов:

using System;
using System.Reflection;
interface Demolnterface
{
}
class DemoAttr : System.Attribute
{
>
enum DemoEnum
{
>
public class DemoBaseClass
{
}
public class DemoDerivedClass : DemoBaseClass
< }
class DemoStruct
{
}
class QueryTypesApp {
public static void QueryType(string typeName)
{
try
{
Type type = Type.GetType(typeName);
Console.Writel_ine(“Type name: {0}”, type.FullName);
Console. Writel_ine( “tHasElementType = {0}”,
type.HasElementType);
Console.Writel_ine(“tIsAbstract = {0}”, type.IsAbstract);
Console.WriteLine(“tIsAnsiClass = {0}”,
type.IsAnsiClass);
Console.WriteLine(“tIsArray = {0}”, type.IsArray);
Console.WriteLine(“tIsAutoClass = {0}”,
type.IsAutoClass); Console.WriteLine(“tIsAutoLayout = {0}”,
type.IsAutoLayout);
Console.WriteLine(“tIsByRef = {0}”, type.IsByRef);
Console.WriteLine(“tIsClass = {0}”, type.IsClass);
Console.WriteLine(“tIsCOMObject = {0}”,
type.IsCOMObject); Console.WriteLine(“tIsContextful = {0}”,
type.IsContextful);
Console.WriteLine(“tIsEnum = {0}”, type.IsEnum);
Console.WriteLine(“tIsExplicitLayout = {0}”,
type.IsExplicit Layout);
Console.WriteLine(“tlslmport = {0}”, type.lslmport);
Console.WriteLine(“tlslnterface = {0}”,
type.lslnterface); Console.WriteLine(“tIsLayoutSequential = {0}”,
type.IsLayoutSequential); Console.WriteLine(“tIsMarshalByRef = {0}”,
type.IsMarshalByRef); Console.WriteLine(“tIsNestedAssembly = {0}”,
type.IsNestedAssembly); Console.WriteLine(“tIsNestedFamANDAssem = {0}”,
type.IsNestedFamANDAssem); Console.WriteLine(“tIsNestedFamily = {0}”,
type.IsNestedFamily); Console.WriteLine(“tIsNestedFamORAssera = {0}”,
type.IsNestedFamORAssem); Console.WriteLine(“tIsNestedPrivate = {0}”,
type.IsNestedPrivate); Console.WriteLine(“tIsNestedPublic = {0}”,
type.IsNestedPublic); Console.WriteLine(“tIsNotPublic = {0}”,
type.IsNotPublic); Console.WriteLine(“tIsPointer = {0}”,
type.IsPointer); Console.WriteLine(“tIsPrimitive = {Q}”,
type.IsPrimitive); Console.WriteLine(“tIsPublic = {O}”,
type.IsPublic); Console.WriteLine(“tIsSealed = {0}”,
type.IsSealed); Console.WriteLine(“tIsSeriallzable = {0}”,
type.IsSerializable); Console.WriteLine(“tIsServicedComponent = {0}”,
type.IsServicedComponent); Console.WriteLine(“tIsSpecialName = {0}”,
type.IsSpecialName); Console.WriteLine(“tIsUnicodeClass = {0}”,
type.IsUnicodeClass); Console.WriteLine(“tIsValueType = {0}”,
type.IsValueType); }
catch(System.NullReferenceException) {
Console.WriteLine
(“{0} is not a valid type”, typeName); } }
public static void Main(string[] args) <
Que ryType(“System.Int32”);
QueryType(“System.Int64”);
QueryType(“System.Type”);
QueryTypeC’DemoAttr”); QueryType(“DemoEnum”);
QueryType(“DemoBaseClass”); Que
ryType(“DemoDe rivedClass”); QueryTypeC’DemoStruct”); } }

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: