Я пытаюсь сохранить аргумент из пользовательской аннотации ( 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(); потому что он хочет аргумент, имеет смысл, но я действительно не знаю, как добавить аргумент из аннотации.
заранее спасибо
Вам нужно использовать отражение, чтобы получить экземпляр атрибута.
Вам действительно нужно использовать атрибуты? Похоже, здесь подойдет string const.
Как упоминалось выше, вам нужно использовать отражение. Требуемое значение привязывается к методу Smoke(), а не к чему-либо еще. Чтобы получить значение, вы получаете экземпляр класса, который содержит Smoke, и оттуда получаете атрибут Custom метода, а затем запрашиваете переменную внутри него.
@DavidG Я думал, что было бы неплохо увидеть, выполняется ли тест для клиента или других. но, может быть, вы правы.
@soynerdito спасибо за разъяснения. Да, с этим я боролся. чтобы понять, привязано ли значение к методу. Возможно, это не очень хорошее решение, так как у меня будут разные имена методов.
Кажется, что нет никакой связи между Uri-классом и вашим Smoke-методом, так почему ваша программа построить должна полагаться на то, что привязано только к последнему?
«работа на клиенте или других»: для меня это не имеет смысла. Атрибуты устанавливаются во время компиляции, вы получите одинаковые значения независимо от того, где запущено приложение.





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