@mletov

Возможно ли создать словарь делегатов, возвращающих List?

Пожалуйста, подскажите:

Есть обобщенный класс
class MyClass<T> where T : class

Есть в нем делегат
private delegate List<T> TDelegate();

И есть словарь
_dctCahceActions = new Dictionary<string, TDelegate>();
 _dctCahceActions.Add("x", (() => { return Method1(); }));
_dctCahceActions.Add("y", (() => { return Method2(); }));
...


Проблема в том, что Method1, Method2 и т д возвращают List разных типов.
Основная идея в том, чтобы сделать что-то вроде
List<T> res = _dctCahceActions["x"].Invoke();
Но проблема возникает еще на этапе компиляции из-за приведения. Как такое правильно решить?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@mletov Автор вопроса
Решил проблему
private delegate dynamic TDelegate();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
List подразумевает, что тип у содержимого листов одинаковый - тип T, если объекты из методов можно к нему привести, то всё должно компилироваться.
using System;
using System.Collections.Generic;

public class MyClass<T> where T : class
{
    private Dictionary<string, Func<List<T>>> functions = new Dictionary<string, Func<List<T>>>();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы