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

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

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

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

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

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

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


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

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

11   голосов , оценка 4 из 5
Похожие ответы