我知道不能将泛型类型化名(例如,using Foo = Dictionary;
无效),但是右边的泛型类型必须关闭(例如,using Foo = Dictionary<int, string>;
将工作)。
然而,别名IDictionary<string, object>
似乎是无效的--相反,别名必须仅用于接口IDictionary
。我得到的错误是"CS0308:非泛型类型'IDictionary‘不能与类型参数一起使用。“有办法把这整件事化作化名吗?(还是一个更好的方法来实现我想要的?)
在我的API中,我做的一件常见的事情是函数接受IDictionary<string, object>
,我想做一些类似于using ParsedObjects = IDictionary<string, object>;
的事情。事实上,我想宣布:
using ParsedObjectsHandler = Func<Interaction, object, IDictionary<string, object>, Task>;
(但我愿意接受前者。)
发布于 2022-12-02 06:46:43
编辑:虽然下面的答案解决了这个问题(因为我在其他地方找不到信息,所以我把它抛在脑后),但我还是同意了V.Lion在评论中的建议,即定义我自己的委托类型。
问题是我试图使用System.Collections.IDictionary
而不是System.Collections.Generic.IDictionary<TKey, TValue>
。使用后一种方法效果很好,即:
using ParsedObjects = System.Collections.Generic.IDictionary<string, object>;
https://stackoverflow.com/questions/74651720
复制相似问题