Вы можете Reflections in C#
для этой цели. ( Источник )
MSDN Описание отражения
Вы можете использовать отражение, чтобы динамически создавать экземпляр типа, связывать тип с существующим объектом или получать тип от существующего объекта и вызывать его методы или обращаться к его полям и свойствам. Если вы используете атрибуты в своем коде, рефлексия позволяет вам получить к ним доступ .
Используйте приведенный ниже код для доступа к атрибутам в вашем коде
try
{
// Get the type of MyClass1.
Type myType = typeof(MyClass1);
// Get the members associated with MyClass1.
MemberInfo[] myMembers = myType.GetMembers();
// Display the attributes for each of the members of MyClass1.
for(int i = 0; i < myMembers.Length; i++)
{
Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
if(myAttributes.Length > 0)
{
Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]);
for(int j = 0; j < myAttributes.Length; j++)
Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]);
}
}
}
catch(Exception e)
{
Console.WriteLine("An exception occurred: {0}", e.Message);
}
Затем после получения всех attributes
, связанных с вашим class
, приступайте к выполнению ваших требований, в противном случае, если у вас нет обоих attributes
, бросьте exception
.