C# 字典扩展方法语法

C# Dictionary Extension method syntax

我正在尝试为字典编写一个扩展方法来缩短 TryGetValue 语法。

这是扩展,与普通方法中的逻辑完全相同。

private static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key) 
{
    return dict.TryGetValue(key, out var output) ? output : new List<T>();
}

private static List<T> TryGet<T>(Dictionary<int, List<T>> dict, int key) 
{
    return dict.TryGetValue(key, out var output) ? output : new List<T>();
}

var works = TryGet(MyDict, MyInt);
var doesntWork = MyDict.TryGet...

代码根本找不到扩展名。我三重确保字典相同且类型正确。

我在一个文件中有扩展代码和其他工作扩展,所以这也不是问题。

调用方法需要可以访问扩展方法,并且应该在 static class 中定义。在 OP 中,它很可能是在非静态 class

中定义的
public static class Extensions
{
public static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key) {
    return dict.TryGetValue(key, out var output) ? output : new List<T>();
 }
 }

扩展方法必须可由调用者访问并且在静态 class.

public static class Extensions
{
    public static List<T> TryGet<T>(this Dictionary<int, List<T>> dict, int key) {
        return dict.TryGetValue(key, out var output) ? output : new List<T>();
    }
}