Словарь <T, Delegate> с делегатами разных типов: более чистые, не строковые имена методов? - PullRequest
4 голосов
/ 30 ноября 2010

Должен быть более чистый метод. В настоящее время у меня есть:

... Constructor()
{
      parseDictionary = new Dictionary<typeOfStream, Delegate>()
            {
                {typeOfStream.SOME_ENUM_VAL, Delegate.CreateDelegate(typeof(ParseDelegate<string>), this, "MyMethod")},
                {typeOfStream.SOME_OTHER_ENUM_VAL, Delegate.CreateDelegate(typeof(ParseDelegate<XmlNode>), this, "MyOtherMethod")}
            };
}

public bool MyMethod(string some_string)
{
    ...
}

public bool MyOtherMethod(XmlNode some_node)
{
    ...
}

и я хотел бы избавиться от "MyMethod" и MyOtherMethod и сделать его this.MyMethod и this.MyOtherMethod, Варианты?

Я открыт для любого решения, которое позволяет мне использовать поиск по словарю, и направить мои данные mojo в произвольный метод (хорошо определенный метод с произвольным набором аргументов) для анализа.

1 Ответ

10 голосов
/ 30 ноября 2010

Просто приведите к нужному типу делегата:

parseDictionary = new Dictionary<typeOfStream, Delegate>()
{
    { typeOfStream.SOME_ENUM_VAL, (ParseDelegate<string>) MyMethod) },
    { typeOfStream.SOME_OTHER_ENUM_VAL, (ParseDelegate<XmlNode>) MyOtherMethod }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...