相关疑难解决方法(0)

识别扩展方法的思考

在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)

我们正在寻找一种机制,在单元测试中确定扩展方法是由开发人员适当添加的.尝试这种情况的一个原因是,开发人员可能会在实际的类中添加类似的方法,如果是,编译器将选择该方法.

c# reflection extension-methods

73
推荐指数
3
解决办法
3万
查看次数

如果没有标记为异步,Task.Delay是如何等待的?

我正在看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))?

.net c# task-parallel-library async-await ilspy

7
推荐指数
1
解决办法
1000
查看次数