Я изо всех сил пытаюсь понять, в чем я ошибаюсь при создании делегата для метода интерфейса
Мой код выглядит следующим образом:
private static Func<HtmlDocument, IObservable<IData>> FindScrapeMethod(ICrawlerStrategy crawler, string scrapeDelegate)
{
Func<HtmlDocument, IObservable<IData>> action;
var fullDelegateName = String.Format("ICrawlerStrategy.{0}", scrapeDelegate);
if (!_delegateCache.TryGetValue(fullDelegateName, out action))
{
var method = typeof(ICrawlerStrategy).GetMethod(scrapeDelegate, BindingFlags.Public | BindingFlags.Instance );
action = (Func<HtmlDocument, IObservable<IData>>)
Delegate.CreateDelegate(typeof(Func<HtmlDocument, IObservable<IData>>), crawler, method);
_delegateCache.Add(fullDelegateName, action);
}
return action;
}
Объявление интерфейса
public interface ICrawlerStrategy
{
Func<HtmlDocument, IObservable<IData>> ExtractorAsync();
}
Класс реализации выглядит следующим образом:
public class MyCrawler : ICrawlerStrategy
{
<snip>
Func<HtmlDocument, IObservable<IData>> ICrawlerStrategy.ExtractorAsync()
{
return (doc) => AsyncScraper(doc);
}
}
Edit1 - по запросу @Yahia:
public IObservable<IData> AsyncScraper(HtmlDocument page)
При попытке создать делегата я получаю "Ошибка привязки к целевому методу ".Когда я шагаю по коду,
- метод не равен нулю, поэтому он, очевидно, может найти метод по типу
- , экземпляр также не равен нулю
Любые указатели, пожалуйста.
Thx
S