C# 通过扩展方法进行调试

C# 通过扩展方法进行调试,c#,debugging,extension-methods,visual-studio-debugging,C#,Debugging,Extension Methods,Visual Studio Debugging,我在C#中创建了一个扩展字符串数据类型的方法,为Split函数创建了额外的重载,以便可以定义文本限定符。 示例 字符串数据定义为“字段1”、“字段2”、“字段3” 扩展工作正常。一旦引用并使用名称空间,我就可以访问该方法。但是,我尝试调试的方法中有一个问题,但是调试器不会进入扩展方法 分机代码 namespace Extensions { public static class StringExtension { public static string[] Split(this

我在C#中创建了一个扩展字符串数据类型的方法,为Split函数创建了额外的重载,以便可以定义文本限定符。 示例 字符串数据定义为“字段1”、“字段2”、“字段3”

扩展工作正常。一旦引用并使用名称空间,我就可以访问该方法。但是,我尝试调试的方法中有一个问题,但是调试器不会进入扩展方法

分机代码

namespace Extensions
{
  public static class StringExtension
  {
    public static string[] Split(this string s, char delimiter, char qualifier)
    {
      // Method does work
    }
  }
}
nUnit测试中的代码

string testString = "\"Field 1\",\"Field 2\",\"Field 3\"";
int expectedCount = 3;

// Do Test.
string[] result = testString.Split(',','"');

Assert.AreEqual(expectedCount, result.Length);
我无法单步执行testString.Split(“,”,““”)。它返回一个结果,intellisense显示扩展方法。调试器只需单步执行,就像内置Split方法一样


有什么想法吗?

您可以在扩展方法中设置一个断点;执行将在此停止

但必须有另一种方法,一种合适且可用的方法。

我还没有找到它。

事实上,当您调用
testString.Split(',','““)
时,实际调用的是
public string[]Split(params char[]separator)
重载,而不是扩展方法。这是因为实例成员(如果适用)总是优先于扩展方法


您唯一可以做的两件事是重命名方法或以某种方式更改签名,使其不同于各种
字符串。拆分
重载。

可以通过按F12(转到def)或查看反射器输出来验证要调用的代码。我问了一个关于如何在VS2010调试器中执行此操作的链接问题。

它应该像
StringExtension.Split(…)一样调用或在下面尝试


断点显示为“当前不会命中断点。没有为此文档加载任何符号”。项目设置为调试,我没有明确设置为不生成调试符号。它将停止(个人体验)如果实际调用了该方法,请参考@Anton Gogolev的答案,该答案被标记为答案。谢谢,这就是问题所在。我重命名了方法SplitWithQualifier,现在调试工作正常。谢谢。那么您调用静态方法的方式可能是错误的。
string testString = "\"Field 1\",\"Field 2\",\"Field 3\"";
int expectedCount = 3;

// Do Test.
string[] result = testString.Split(',','"');

Assert.AreEqual(expectedCount, result.Length);