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方法一样.
有任何想法吗??
事实上,当你调用testString.Split(',','"')什么实际上被称为是public string[] Split(params char[] separator)过载,而不是你的扩展方法.这是因为实例成员(如果适用)始终优先于扩展方法.
您可以做的唯一两件事是重命名您的方法或以某种方式更改签名,以便它与各种String.Split重载不同.
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |