I am aware that it's not possible to alias a generic type (e.g. using Foo = Dictionary;
is invalid), but that the generic type on the right must be closed (e.g. using Foo = Dictionary<int, string>;
will work).
However, it seems like it's invalid to alias an IDictionary<string, object>
--instead, the alias must be for just the interface IDictionary
. The error I get is "CS0308: The non-generic type 'IDictionary' cannot be used with type arguments." Is there a way to alias this entire thing? (Or a better way to achieve what I want?)
A common thing I do in my API is for functions to take an IDictionary<string, object>
, and I'd like to do something akin to using ParsedObjects = IDictionary<string, object>;
. In fact, I'd like to be able to declare:
using ParsedObjectsHandler = Func<Interaction, object, IDictionary<string, object>, Task>;
(But I am willing to settle for just the former.)
Edit: Although the below answer solves the question (and I'm leaving it up as I could not find the info anywhere else), I did go with V.Lion's suggestion in the comments to define my own delegate type instead.
The issue was that I was attempting to use System.Collections.IDictionary
instead of System.Collections.Generic.IDictionary<TKey, TValue>
. Using the latter worked just fine, i.e.:
using ParsedObjects = System.Collections.Generic.IDictionary<string, object>;