C#委托属性

C#委托属性,c#,C#,是否可以在c#中作为委托传递属性 我知道在C#中,我们可以将函数作为参数传递给方法,但我有一个属性,在我的情况下,它与不带参数的函数没有太大区别,我如何将它作为参数传递 public IWebElement Name => _element.FindElements(By.ClassName("field-key"))[0].FindElements(By.TagName("label"))[0]; 我正在使用硒元素和改变元素。这就是为什么我的Name属性就是这样的原因。因此,当我执行类

是否可以在c#中作为委托传递属性


我知道在C#中,我们可以将函数作为参数传递给方法,但我有一个属性,在我的情况下,它与不带参数的函数没有太大区别,我如何将它作为参数传递

public IWebElement Name => _element.FindElements(By.ClassName("field-key"))[0].FindElements(By.TagName("label"))[0];
我正在使用硒元素和改变元素。这就是为什么我的
Name
属性就是这样的原因。因此,当我执行类似于:
multi-nationalpage.GeneralPanel.DefinitionField.name
的操作时,我总是会得到最新的名称

在防止出现陈旧元素引用异常的测试中,我使用了
Thread.Sleep()
,我知道有更好的方法,但现在,这是我的方法

Thread.Sleep(5000)

multinational.EditModal.StateTracker.VerifyChanges(_multinational.GeneralPanel.DefinitionField.Name);
我想在
VerifyChanges()
中执行
Thread.Sleep(5000)
,这就是为什么我想将
Name
属性作为委托传递给
VerifyChanges(多国页面.GeneralPanel.DefinitionField.Name)

大概是这样的:

public void VerifyChanges(Func<IWebElement> Name) 
{
    Thread.Sleep(5000)
    var name = Name;
    ...
}
public void VerifyChanges(函数名)
{
线程。睡眠(5000)
变量名称=名称;
...
}

如果您可以共享完整的代码,那么我们可以更好地了解您试图解决的问题。传递属性与向函数传递参数值相同。e、 让我们假设你的函数看起来像

public void MyFunction(IWebElement webElement)
{
  // Your code goes here.
}
您可以按如下方式调用此函数并传递属性:

MyClass obj = new MyClass();
MyFunction(obj.Name);
我假设MyClass是具有此属性的类的名称

==========已编辑 在这种情况下,您可以将代码包装在Func中,如下所示

 public void VerifyChanges(() => multinational.GeneralPanel.DefinitionField.Name);

解决方案是将对属性的访问封装在lambda中:


.EditModal.StateTracker.VerifyChanges(
()=>\u.GeneralPanel.DefinitionField.Name
);

我认为有更好的方法来解决这个问题

创建一个接口:

interface IHasName
{
    IWebElement Name { get; }
}
实施:

class YourClass : IHasName
{
    public IWebElement Name
        => _element.FindElements(By.ClassName("field-key"))[0].FindElements(By.TagName("label"))[0];
}
那么你的方法是:

public void VerifyChanges(IHasName hasName) 
{
    Thread.Sleep(5000)
    var name = hasName.Name;
    ...
}

你不能传递一个调用属性的操作吗?你可以将函数作为参数传递,而不是getter方法。更新了问题:“但在我的情况下,我有一个属性与一个不带参数的函数没有太大的不同。”一个属性在这方面是不同的,它实际上是两个方法。因此,您还需要两个委托,一个用于获取,一个用于设置值。