如何找到设置房产的所有地方?

时间:2011-05-23 10:48:59

标签: c# visual-studio visual-studio-2010

很容易找到使用属性的所有代码,但是如何找到设置的代码?

(当我在“set”上执行“查找所有引用”时,它只是在属性本身上执行“查找所有引用”,包括只读取它的代码。)

6 个答案:

答案 0 :(得分:47)

您可以使用Resharper

或者,将setter设置为private(或完全注释掉setter)并重新编译。在尝试设置属性时,您将收到错误。

答案 1 :(得分:19)

尝试评论属性的set部分并构建它会在所有使用它的地方出错。

答案 2 :(得分:12)

对于它的价值,这将在VS2019中实现。

特别是“查找所有引用”窗口中有一个新的“查找”列,可以对其中的“写”引用进行过滤:

enter image description here

添加了此功能的特定Github PR计划包含在Visual Studio 2019预览版2(16.0.P2)https://github.com/dotnet/roslyn/issues/22545

VS2019的完整版本为roadmapped for Q1 of 2019

答案 3 :(得分:1)

您可以在propertyName =上运行文本搜索 - 您可以尝试使用正则表达式搜索来在名称和=之间允许0到n个空格。

答案 4 :(得分:0)

AFAIK,这不能使用Visual Studio的标准功能完成 - 它不会对属性做任何特殊操作,以检查它们在搜索时是在左侧还是右侧使用,并且,当然,没有选择告诉它这样做。

要提供一个选项而不必运行额外的正则表达式或安装其他软件,您可以浏览结果窗口让您的眼睛扫描左侧发生 - 可能不是最有效率但我不确定我看到比其他建议更有优势。

最后,@ Kamyar关于让属性不再可访问的建议似乎值得一看,但这取决于你的项目编译需要多长时间,它可能需要更长时间才能找到所有 - 我不确定为什么你需要Resharper这样做呢。

答案 5 :(得分:0)

这是一个相当强大的解决方案,对于使用没有第三方工具的Visual Studio的非属性也是如此。请务必在查找中选择“匹配大小写”和“使用正则表达式”选项。

<强> 1。除了后期/预修复增量和班次分配以外的所有内容:

  (^|[^\w.])MyVariable\s*([\+\-\*/%&|\^]|)=[\w\s]

<强> 2。对于后期/预修复增量和班次分配:

  ((^|[^\w.])MyVariable\s*(\+\+|--)|(\+\+|--)\s*MyVariable[^\w.]|(^|[^\w.])MyVariable\s*(<<|>>)=)

第3。对于Out / Ref参数(属性的N / A):

  (^|[^\w.])(out|ref)\s+MyVariable[^\w.]

CAVEATS:

  1. 仅限C#.NET。
  2. 仅限Visual Studio 2012+。
  3. 如果“E”后面跟着EOL,则无法使用。
  4. 如果“MyVariable”后面跟着EOL,则不起作用。
  5. 根据变量/属性的查找和范围的起点和范围,可能会找到比必要更多/更少的引用。如果有疑问,“更多”的错误,所以你不会错过任何东西。
  6. 不适用于“。” - 前缀变量/属性。 6.1。除非您将其作为“MyVariable”(即“MyStructVariable.MyStructField”或“MyObjectVariable.MyObjectField”)的一部分包含在内,否则您可能会发现太少的引用,因为可能有其他结构或对象变量用于对同一个Struct或对象字段或属性。