如何让编译器知道参数是属性名

本文关键字:参数 属性 编译器 | 更新日期: 2023-09-27 18:14:36

使用xUnit时,如果我输入code:

public static IEnumerable<object[]> TestCases
{
        // test data
} 
[Theory, PropertyData("TestCases")]
public  void Test(// some parameter){}

编译器/resharper(我不确定是什么使它工作)知道"TestCases"(构造函数中的字符串参数)是我定义的静态属性TestCases。

背后的机制是什么?

谢谢你的评论。

这是我观察到的。如果没有与该名称对应的成员,该字符串将突出显示为错误。似乎是关于r#,当我关闭它时,错误将不再显示

如何让编译器知道参数是属性名

如果你想在"TestCases"字符串上获得高亮显示、导航和代码完成,这是ReSharper的功能之一。从本质上讲,ReSharper特别注意到这样一个事实,即某些字符串标识符实际上与其他地方找到的符号相关。因此,它为您提供的特性就好像您输入的字符串是一个实际的标识符。