using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace ConsoleApplication1
{
[Serializable]
[AttributeUsage(AttributeTargets.Class)]
public class PersonCardAttribute : Attribute
{
public string Name;
public bool Gender;
public int Age;
public string Birthday;
public string Address;
public string PersonID;
public string Image;
public PersonCardAttribute(string name, bool gender, int age, string birthday, string address, string personID, string image)
{
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Birthday = birthday;
this.Address = address;
this.PersonID = personID;
this.Image = image;
}
}
[Serializable]
[AttributeUsage(AttributeTargets.Class)]
public class ExamCardAttribute : Attribute
{
public string Name;
public string StudyID;
public string ExamID;
public string PersonID;
public string SeatNO;
public string Image;
public ExamCardAttribute(string name, string studyID, string examID, string personID, string seatNO, string image)
{
this.Name = name;
this.StudyID = studyID;
this.ExamID = examID;
this.PersonID = personID;
this.SeatNO = seatNO;
this.Image = image;
}
}
[AttributeUsage(AttributeTargets.Method)]
public class AnswerSpeedAttribute : Attribute
{
public enum Speed
{
QUICK,
NORMAL,
SLOW
}
public Speed speed;
public AnswerSpeedAttribute(Speed speed)
{
this.speed = speed;
}
}
[PersonCard("wang2",true,24,"1982/12/24","XXX city","111111111111111111","wang2_img")]
[ExamCard("wang2","S200024","K0034","111111111111111111","302室29号","wang2_img")]
public class Person
{
public bool Gender;
[AnswerSpeed(AnswerSpeedAttribute.Speed.NORMAL)]
public void Write()
{
}
}
static void Main(string[] args)
{
PersonCardAttribute pCard = null;
ExamCardAttribute eCard = null;
Type person = typeof(Person);
Object[] customAtrributes = person.GetCustomAttributes(true);
foreach (object attribute in customAtrributes)
{
if (attribute is PersonCardAttribute)
{
pCard = attribute as PersonCardAttribute;
}
if (attribute is ExamCardAttribute)
{
eCard = attribute as ExamCardAttribute;
}
}
if (eCard.Name == pCard.Name && eCard.PersonID == pCard.PersonID && eCard.Image == pCard.Image)
{
Console.WriteLine("Start answering...");
foreach (MethodInfo mInfo in person.GetMethods())
{
foreach (Attribute attr in Attribute.GetCustomAttributes(mInfo))
{
if (attr is AnswerSpeedAttribute)
{
AnswerSpeedAttribute aSpeed = attr as AnswerSpeedAttribute;
Console.WriteLine("Answer speed is " + aSpeed.speed.ToString());
}
}
}
}
else
{
Console.WriteLine("Can't go into examination room");
}
Console.ReadLine();
}
}
}