Это дерево, поэтому рекурсия - ваш друг: начните с родительского каталога и вызовите метод, чтобы получить массив дочерних файлов. Итерация через дочерний массив. Если текущее значение является каталогом, передайте его рекурсивному вызову вашего метода. Если нет, обработайте файл листа соответствующим образом.
Я являюсь коммиттером Castle, участвующим в Dynamic Proxy, поэтому я могу быть предвзятым, но в целом я считаю, что Dynamic Proxy Castle - гораздо лучшее решение. Я говорю здесь о LinFu DynamicProxy v1.0, потому что это то, с чем я знаком. LinFu.Proxy 2 основан на Mono.Cecil и переписан с нуля.
invocation.Proceed ();
для LinFu это выглядит так (фактическое имя метода / свойства может отличаться, поскольку я пишу его из памяти)
//invocation.TargetMethod is MethodInfo, so you're using reflection
invocation.TargetMethod.Invoke(invocation.Target,invocation.Parameters);
Проблема производительности, упомянутая в другом ответе, не является проблемой DynamicProxy, а является результатом ошибки в реализации BCL от Microsoft (в Mono нет такой вопрос, кстати). Это проявляется только тогда, когда у вас есть много (более 200+) типов прокси в одном ModuleScope.
Решение тривиальное - не генерируйте такое количество типов прокси (обычно вам не придется) или используйте много ModuleScopes / ProxyGenerators ( например, Rhino.Mocks использует этот подход)
Лично я не занимаюсь разработкой на Mono, поэтому у меня нет личного опыта, однако есть библиотеки, использующие Castle DP на Mono, и мы не получили никаких жалоб, так что я думаю он работает отлично.
С момента моего тестирования несколько месяцев назад не было новой версии Castle DP (новая версия нацелена на конец года). У LiFu есть версия 2.0, но я не уверен, что она только транковая или выпущена. Я не знаю о Spring или Unity.
Linfu является более легким генератором прокси, чем генератор прокси Castle.
Если честно, при принятии решения, какой использовать, особой разницы нет.
Согласно автору Linfu значительно превосходит генератор Castle, но в моих собственных наблюдениях за использованием в реальном мире разница в скорости незначительна.
Сказав, что Linfu превзойдет Castle, я не знаю ничего, что было бы у Castle. его, поэтому я всегда использую Linfu.
У нас были проблемы с производительностью, связанные с LinFu vs Castle в 2.0.1. http://niemware.blogspot.com/2009/11/nhibernate-21-performance-issues-with.html