【问题标题】:How can we use custom attribute to assign a value to a field?我们如何使用自定义属性为字段赋值?
【发布时间】:2018-06-07 04:42:14
【问题描述】:

我是 C# 的新手,也是自定义属性的初学者。

我有两个问题:

[FindsBy(How = How.xpath, Using = "//*[@id='test']")]
public IWebElement BTN_Position;
  1. 使用此代码如何初始化BTN_PositionFindsBy 是否返回一些值并将其分配给该字段?

  2. 我正在编写自定义属性。我可以在最后返回一个值并分配给一个字段吗?

类似:Test 属性接受两个位置参数并执行某些操作,returns 和 string 结合两个 strings。当我使用如下代码时,它应该分配给FullName

[TestAttribute("Firstname", "Lastname")]
public string FullName;

【问题讨论】:

    标签: c# custom-attributes


    【解决方案1】:

    属性仅用作元数据。它们是类,所以它们可以有函数等,但这些函数不会被自动调用。您必须使用反射来获取属性的实例,此时您可以调用这些函数。

    例如,ASP.NET MVC 中的HttpPost 属性实际上除了保存数据之外的任何事情。 MVC 反映寻找该属性的控制器方法,然后根据该属性实例上声明的值在路由器中注册该方法。

    【讨论】:

    • 不使用反射有什么办法吗?反射在 .NET Core 中已过时。
    • 反射在 .NET Core 中并没有过时。我每天都在那里使用它。你指的是什么?
    • 值得注意的是,您可能必须在 .net Core 中使用 typeof(T).GetTypeInfo() 才能真正获得反射内容。
    • 我正在尝试用自定义属性替换 PageFactory。 FindsBy 是 PageFactory 的一部分。
    • 那么我建议你创建一个类,比如 FindsByBasedPageProvider,它可以扫描程序集,查找具有 FindsBy 属性的方法的类,注册它们以进行查找,并公开一个用于创建基于页面的方法在 FindsBy 中找到的信息。
    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多