在C#中是否有一种使用反射来确定方法是否已作为扩展方法添加到类的技术?
给定一个扩展方法,如下所示,可以确定Reverse()已被添加到字符串类?
public static class StringExtensions
{
public static string Reverse(this string value)
{
char[] cArray = value.ToCharArray();
Array.Reverse(cArray);
return new string(cArray);
}
}
Run Code Online (Sandbox Code Playgroud)
我们正在寻找一种机制,在单元测试中确定扩展方法是由开发人员适当添加的.尝试这种情况的一个原因是,开发人员可能会在实际的类中添加类似的方法,如果是,编译器将选择该方法.
我正在看Task.Delay(int)ILFLy反编译:
// System.Threading.Tasks.Task
[__DynamicallyInvokable]
public static Task Delay(int millisecondsDelay)
{
return Task.Delay(millisecondsDelay, default(CancellationToken));
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法await Task.Delay(5000);,智能感知甚至说"(等待)":

那怎么Task.Delay(int)没有标记async(public static async Task Delay(int millisecondsDelay))?