В некотором классе метод A, мне нужно вызвать библиотечный метод B, который принимает как IProgress<Object>
как параметр.
Обычно я могу либо реализовать IProgress<Object>
как часть класса, где находится A, а затем передать "this" методу B. Или, возможно, я могу создать новый класс, единственная цель которого - реализовать IProgress<Object>
и обработать его правильно - тогда в этом случае я создам экземпляр этого класса и передам его в B.
Но я действительно хочу, чтобы моя реализация IProgress<Object>
отображалась прямо внутри метода, в котором я вызываю B, так что меньше визуального отключения между вызывающим кодом и реализацией IProgress<Object>
, (Я считаю, что моя реализация IProgress является своего рода частной, не разделяемой деталью вызывающего метода, и поэтому я не хочу, чтобы моя реализация IProgress<Object>
была в целом отдельном методе, возможно, всего другого класса).
То, что я пытался сделать, это использовать лямбда, в котором я буду определять свою короткую обработку прогресса, а затем как-то передать эту лямбду в B, например:
method in class A {
...
Action<Object> Report = (m) => { // do something useful with m };
B(Report)
}
method B(IProgress<Object> reporter) {
reporter.Report(some object)
}
Конечно, я знаю, почему это не сработает, как есть - B хочет объект, реализующий IProgress<Object>
, и я передам ему объект Action.
Есть ли способ достичь того, чего я пытаюсь достичь? (IE имеет мою реализацию, если IProgress<Object>
появляется внутри метода A?