通过扩展方法进行调试

Kev*_*anx 4 c# debugging extension-methods visual-studio-debugging

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

string[] splitData = data.Split(',','"')
Run Code Online (Sandbox Code Playgroud)

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

扩展代码

namespace Extensions
{
  public static class StringExtension
  {
    public static string[] Split(this string s, char delimiter, char qualifier)
    {
      // Method does work
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

nUnit测试中的代码

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

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

Assert.AreEqual(expectedCount, result.Length);
Run Code Online (Sandbox Code Playgroud)

我无法进入testString.Split(',',''').它返回一个结果,intellisense显示扩展方法.调试器只是跨越它,就像内置的Split方法一样.

有任何想法吗??

Ant*_*lev 6

事实上,当你调用testString.Split(',','"')什么实际上被称为是public string[] Split(params char[] separator)过载,而不是你的扩展方法.这是因为实例成员(如果适用)始终优先于扩展方法.

您可以做的唯一两件事是重命名您的方法或以某种方式更改签名,以便它与各种String.Split重载不同.