Метод возврата универсального типа при передаче делегата в качестве параметра - PullRequest
0 голосов
/ 21 октября 2010

Я пытаюсь «обобщить» некоторый код, который мы разбросали по нашей системе.

Я хочу:

  1. возвращает универсальный тип,
  2. передать какой-то делегат, содержащий вызываемый метод.

Я довольно новичок в дженериках, поэтому любая помощь приветствуется.

Ниже где мой палец в воздухе (!)

public static T ReturnSingleObject<T>(Func<string, int, T> dynamicSignature)
    {
        T returnValue;
        ServiceReference wCFService;
        try
        {
            wCFService = new BusinessServiceClient();

            returnValue = dynamicSignature();

            //returnValue = wCFService.AMETHOD(PARAM1, PARAM2);
            return returnValue;
        }
        catch (Exception)
        {
            if (wCFService != null) wCFService.Abort();
            throw;
        }
        finally
        {
            if (wCFService != null) wCFService.Close();
        }
    }

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Похоже, вам не хватает пары параметров для вашей функции dynamicSignature, поэтому вам нужно добавить их.Кроме того, вы можете переместить свой оператор возврата вниз, из блока try и инициализировать возвращаемое значение значением по умолчанию:

T returnValue = default(T);
...
try
{
   ...
   returnValue = dynamicSignature(somestring, someint);
   ...
}
...

return returnValue;
0 голосов
/ 21 октября 2010

Вы должны проверить эту ссылку, она имеет дело с объявлением универсального делегата: http://msdn.microsoft.com/en-us/library/sx2bwtw7.aspx

...