Для java 8 +, другое возможное решение (более общий, func-стиль и без аспектов) могло состоять в том, чтобы создать некоторый код принятия служебного метода в качестве параметра
public static <T> T timed (String description, Consumer<String> out, Supplier<T> code) {
final LocalDateTime start = LocalDateTime.now ();
T res = code.get ();
final long execTime = Duration.between (start, LocalDateTime.now ()).toMillis ();
out.accept (String.format ("%s: %d ms", description, execTime));
return res;
}
, И код вызова мог быть чем-то как этот:
public static void main (String[] args) throws InterruptedException {
timed ("Simple example", System.out::println, Timing::myCode);
}
public static Object myCode () {
try {
Thread.sleep (1500);
} catch (InterruptedException e) {
e.printStackTrace ();
}
return null;
}
.NET не поддерживает выгрузку только одной сборки. Вместо этого вам нужно выгрузить весь AppDomain
. Я не знаю точно, как IronPython работает с AppDomain
s, но это нормальный способ работы .NET. (Загрузите сборку в новый AppDomain
, используйте его, удалите AppDomain
, создайте новый AppDomain
с новой версией файла и т. Д.)