C#扩展方法解析为错误的类

问题描述

考虑以下代码:

public static class Class1
{
    public static string Test(this string t) => "string";
    public static string Test<T>(this T t) => "t";
    public static string Test<U>(this List<U> list)
    {
        StringBuilder result = new StringBuilder();
        list.ForEach(s => result.Append($"{s.Test()},"));
        return $"List({result.ToString()})";
    }

    public static void X()
    {
        System.Diagnostics.Debug.WriteLine("Hallo".Test()); // "string"
        System.Diagnostics.Debug.WriteLine(new Y().Test()); // "t"
        var YList = new List<Y>();
        YList.Add(new Y());
        System.Diagnostics.Debug.WriteLine(YList.Test());   // "List(t,)"
        var stringList = new List<string>();
        stringList.Add("Hallo");
        System.Diagnostics.Debug.WriteLine(stringList.Test());  // "List(t,)" !!
    }
}

IMO,最后一种情况应该输出“ List(string,)”,因为它是为List 调用的,并且还有一个更具体的扩展方法string.Test()。我究竟做错了什么?如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...