Как получить значение из атрибута? - C#
Формулировка задачи:
Атрибуты Attribut GetCustomAttributes GetField
не очень понимаю атрибуты
вот пример
обьект на котором применяеться
А как получить значение с атрибута
в смысле Name что хранит значение
получить его
шаманил вот так
отдельный метод через который я получу значение Name
Но к сожалению не выходит
Msdn читкал не помогло
есть ли пример или обьяснение этого
И как можно значения обьекта получить атрибуту
и использовать - а потом через метод получить результат
проверки атрибутом
вот что на мысль попадает
Ну и метод что получит этот ErrorMessage и его ответ
Листинг программы
- 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; }
- }
Листинг программы
- 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);
- }
Листинг программы
- 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;}
- }
Решение задачи: «Как получить значение из атрибута?»
textual
Листинг программы
- ObjectTest obj=new ObjectTest ();
- obj.Name="hgjhgjhghg";
- //Определяло Name по obj.Name автоматом
- GetVeryfication(obj,obj.Name)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д