Создать переменную из аргумента аннотации

Я пытаюсь сохранить аргумент из пользовательской аннотации ( UrlAnnotation ), чтобы иметь возможность использовать его в разных классах.

Но, к сожалению, я не могу заставить его работать простым способом :/

Вот как я пытаюсь это решить.

Test.cs

[UrlAnnotation("customer"])
[TestMethod]
public void Smoke(){
 ....
}

UrlAnnitation.cs

public class UrlAnnotation : Attribute
 {
  private string baseUrl;

  public UrlAnnotation(string baseUrl)
  {
   this.baseUrl = baseUrl;
  }
 }

Позже я пытаюсь получить доступ к baseUrl (аргумент аннотации) следующим образом.

**Uri.cs**

public class Uri {

   private UrlAnnotation urlAnnotation;

   public Uri()
    {
      urlAnnotation = new UrlAnnotation();
    }
 }

Ошибка, которая выдается из Аннотация URL = новая Аннотация URL(); потому что он хочет аргумент, имеет смысл, но я действительно не знаю, как добавить аргумент из аннотации.

заранее спасибо

Как Smoke относится к Uri?

HimBromBeere 14.03.2019 17:00

Вам нужно использовать отражение, чтобы получить экземпляр атрибута.

SLaks 14.03.2019 17:02

Вам действительно нужно использовать атрибуты? Похоже, здесь подойдет string const.

DavidG 14.03.2019 17:04

Как упоминалось выше, вам нужно использовать отражение. Требуемое значение привязывается к методу Smoke(), а не к чему-либо еще. Чтобы получить значение, вы получаете экземпляр класса, который содержит Smoke, и оттуда получаете атрибут Custom метода, а затем запрашиваете переменную внутри него.

soynerdito 14.03.2019 17:06

@DavidG Я думал, что было бы неплохо увидеть, выполняется ли тест для клиента или других. но, может быть, вы правы.

Dymond 14.03.2019 17:07

@soynerdito спасибо за разъяснения. Да, с этим я боролся. чтобы понять, привязано ли значение к методу. Возможно, это не очень хорошее решение, так как у меня будут разные имена методов.

Dymond 14.03.2019 17:08

Кажется, что нет никакой связи между Uri-классом и вашим Smoke-методом, так почему ваша программа построить должна полагаться на то, что привязано только к последнему?

HimBromBeere 14.03.2019 17:11

«работа на клиенте или других»: для меня это не имеет смысла. Атрибуты устанавливаются во время компиляции, вы получите одинаковые значения независимо от того, где запущено приложение.

DavidG 14.03.2019 17:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
19
0

Другие вопросы по теме