Как получить значение из атрибута? - C#

Узнай цену своей работы

Формулировка задачи:

Атрибуты Attribut GetCustomAttributes GetField не очень понимаю атрибуты вот пример
Листинг программы
  1. public class ObjectCodeAttribute : Attribute
  2. {
  3. private readonly string _value;
  4. public ObjectCodeAttribute(string value)
  5. {
  6. _value = value;
  7. }
  8. public string Value
  9. {
  10. get { return _value; }
  11. }
  12. public string ErrorMessage { get; set; }
  13. }
обьект на котором применяеться
Листинг программы
  1. public class ObjectTest
  2. {
  3. [ObjectCode("Form1",ErrorMessage = "Ошибка выполнения 1")]
  4. public string Name { get; set; }
  5. [ObjectCode("Form2", ErrorMessage = "Ошибка выполнения 2")]
  6. public string First { get; set; }
  7. }
А как получить значение с атрибута в смысле Name что хранит значение получить его шаманил вот так отдельный метод через который я получу значение Name
Листинг программы
  1. public class GetAttributeValue
  2. {
  3. public void GetStringValue(ObjectTest obj)
  4. {
  5. string str = string.Empty;
  6. //ObjectCodeAttribute aAttributes = Attribute.GetCustomAttributes(typeof(ObjectTest)) as ObjectCodeAttribute;
  7. //MethodInfo method = clsType.GetMethod("");
  8. //ParameterInfo[] parameters = method.GetProperties();
  9. Type type = obj.Name.GetType();
  10. FieldInfo fi = type.GetField("Name");
  11. try
  12. {
  13. object[] attrs =
  14. fi.GetCustomAttributes(typeof(ObjectCodeAttribute), false);
  15. foreach (var p in attrs)
  16. {
  17. str += p;
  18. }
  19. }
  20. catch (Exception ex)
  21. {
  22. str = ex.Message + "\n\n"+ex.StackTrace;
  23. }
  24. Console.WriteLine(str);
  25. }
Но к сожалению не выходит Msdn читкал не помогло есть ли пример или обьяснение этого
Листинг программы
  1. fi.GetCustomAttributes(typeof(ObjectCodeAttribute), false);
И как можно значения обьекта получить атрибуту и использовать - а потом через метод получить результат проверки атрибутом вот что на мысль попадает
Листинг программы
  1. public class ObjectCodeAttribute : Attribute
  2. {
  3. private readonly string _value;
  4. public ObjectCodeAttribute(string value)
  5. {
  6. _value = value;
  7. if(_value.Length<=Line)
  8. {
  9. ErrorMessage="Длина Name слишком длинная";
  10. }
  11. }
  12. public string Value
  13. {
  14. get { return _value; }
  15. }
  16. public string ErrorMessage { get; set; }
  17. public int Line {get;set;}
  18. }
Ну и метод что получит этот ErrorMessage и его ответ

Решение задачи: «Как получить значение из атрибута?»

textual
Листинг программы
  1. ObjectTest obj=new ObjectTest ();
  2. obj.Name="hgjhgjhghg";
  3.  
  4. //Определяло Name по obj.Name автоматом
  5.  
  6. GetVeryfication(obj,obj.Name)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы