【发布时间】:2023-03-28 21:53:01
【问题描述】:
在这个例子中,一个扩展方法使用类型的名称从字典中返回一个使用泛型 T 的类型的值。
public static T GetItem<T>(this Dictionary<string, object> dictionary)
{
var y = nameof(T);
var z = dictionary.FirstOrDefault(x => x.Key == y);
return (T)z.Value;
}
并用作
var item = dictionary.GetItem<SomeClass>();
是否可以在上面的扩展方法中获取nameof(T),而不向该方法提供任何进一步的参数?这似乎在运行时返回 T 而不是预期的 SomeClass。
【问题讨论】:
-
该类型由
typeof而非nameof返回。nameof返回它所指向的事物的名称。在这种情况下,参数名称 -
我还有一个问题,如果你真的有一本字典,你为什么把它用作列表/数组?你应该可以把你的代码写成
var z = dictionary[y];,不是吗?