public override void Verify()
 {
     base.Verify();
     Debug.Assert(NewAttribute.GetInVersion(OldVersion) == null && NewAttribute.GetInVersion(NewVersion) == NewAttribute);
     Debug.Assert(HasAttributes.PSMAttributes.Contains(NewAttribute));
     Debug.Assert((HasAttributes.IsFirstVersion && HasAttributesOldVersion == null) ||
                  !HasAttributesOldVersion.PSMAttributes.Contains(NewAttribute));
     Debug.Assert(NewAttribute.Version == NewVersion);
 }
Exemple #2
0
        static void Main(string[] args)
        {
            Person.Person obj = new Person.Person();
            Type          t   = obj.GetType();

            Console.WriteLine("\nИнформация о типе:");
            Console.WriteLine("Тип " + t.FullName + " унаследован от " + t.BaseType.FullName);
            Console.WriteLine("Пространство имен " + t.Namespace);
            Console.WriteLine("Находится в сборке " + t.AssemblyQualifiedName);
            Console.WriteLine("\nКонструкторы:");
            foreach (var x in t.GetConstructors())
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("\nМетоды:");
            foreach (var x in t.GetMethods())
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("\nСвойства:");
            foreach (var x in t.GetProperties())
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("\nПоля данных (public):");
            foreach (var x in t.GetFields())
            {
                Console.WriteLine(x);
            }

            Type t2 = typeof(Person.Person);

            Console.WriteLine("\nВызов метода:");
            Person.Person Lera       = (Person.Person)t.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { });
            object[]      parameters = new object[] { 5, 5 };
            object        Result     = t.InvokeMember("Study", BindingFlags.InvokeMethod, null, Lera, parameters);

            Console.WriteLine("Успеваемость: {0}", Result);

            Console.WriteLine("\nPerson реализует IComparable -> " + t.GetInterfaces().Contains(typeof(IComparable)));
            Type a = typeof(Person.Person);

            Console.WriteLine("\nСвойства, помеченные атрибутом:");
            foreach (var x in a.GetProperties())
            {
                object at;
                if (GetPropertyAttribute(x, typeof(NewAttribute), out at))
                {
                    NewAttribute attr = at as NewAttribute;
                    Console.WriteLine(x.Name + " - " + attr.abc);
                }
            }
            Console.ReadKey();
        }
Exemple #3
0
        static void Main(string[] args)
        {
            Rectangle obj = new Rectangle(3.1, 3.2);
            Type      t   = obj.GetType();

            Console.WriteLine("\nКонструкторы:");
            foreach (var x in t.GetConstructors())
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("\nМетоды:");
            foreach (var x in t.GetMethods())
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("\nСвойства:");
            foreach (var x in t.GetProperties())
            {
                Console.WriteLine(x);
            }

            //содержат ли свойства  атрибут NewAttribute
            Type t1 = typeof(Rectangle);

            Console.WriteLine("\nСвойства, помеченные атрибутом:");
            foreach (var x in t1.GetProperties())
            {
                object attrObj;
                if (GetPropertyAttribute(x, typeof(NewAttribute), out attrObj))
                {
                    NewAttribute attr = attrObj as NewAttribute;// Для приведения полученного значения типа object к требуемому типу NewAttribute
                    Console.WriteLine(x.Name + " - " + attr.Description);
                }
            }

            //вызов метода с использованием рефлексии
            Type t2 = typeof(Rectangle);

            Console.WriteLine("\nВызов метода:");
            //Создание объекта
            //ForInspection fi = new ForInspection();
            //Можно создать объект через рефлексию
            Rectangle fi = (Rectangle)t.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { });

            //Параметры вызова метода
            object[] parameters = new object[] { 3.1, 3 };
            //Вызов метода
            object Result = t2.InvokeMember("Area1", BindingFlags.InvokeMethod, null, fi, parameters);

            Console.WriteLine("Area1 (3.1 ,3)={0}", Result);
            // Метод InvokeMember принимает различные
        }
        /// Работа с атрибутами
        static void AttributeInfo()
        {
            Type t = typeof(Car);

            Console.WriteLine("\nСвойства, помеченные атрибутом:");
            foreach (var x in t.GetProperties())
            {
                object attrObj;
                if (GetPropertyAttribute(x, typeof(NewAttribute), out attrObj))
                {
                    NewAttribute attr = attrObj as NewAttribute;
                    Console.WriteLine(x.Name + " - " + attr.Description);
                }
            }
        }