Как заменить динамическое ключевое слово в WindowsPhone - PullRequest
0 голосов
/ 18 марта 2012

Я пытаюсь использовать часть своего кода из приложения Silverlight в приложении WindowsPhone. Однако у меня есть проблема с заменой динамического ключевого слова чем-то другим, так что мой код все еще компилируется и работает. У меня есть список динамических объектов

private readonly List<dynamic> _awaitingActionsList = new List<dynamic>();

этот список используется для хранения делегатов этой подписи

Action<T> where T: class

В другой части моего класса я вызываю делегатов, используя этот код

foreach (var action in _awaitingActionsList)
{
    InvokeAction(action)
}

Функция InvokeAction выглядит следующим образом

public void InvokeAction<T>(Action<T> action)
{
    action.Invoke(someObject);
}

Благодаря динамическому ключевому слову этот код хорошо работал в Silverlight, однако динамического ключевого слова нет в WindowsPhone, поэтому мне было интересно, как его заменить. Я не хочу менять сигнатуру функции InvokeAction, потому что благодаря использованию обобщений и Action я могу передавать делегатам функции следующим образом:

InvokeAction<SomeType>(val => val.DoStuff(param));

1 Ответ

0 голосов
/ 18 марта 2012

Вы можете использовать List<Delegate> и вызывать метод DynamicInvoke.

Это будет медленно, но dynamic также медленно.
(я не знаю, что медленнее)

...