Таким образом, решение было довольно простым: хотя я не могу сделать это с неизменностью здесь напрямую, я могу просто использовать вместо:
Dictionary<Type, Delegate>
.Я могу назначить любой делегат, независимо от типа.Затем, при получении делегата, мне просто нужно снова привести его к
CreateObjectDelegateAsync<T>
.
Примерно так (учитывая, что T
- это существующий тип в словаре):
(CreateObjectDelegateAsync<T>)DelegateDictionary[typeof(T)]