Я не совсем уверен, с чего начать, поэтому этот вопрос, вероятно, будет развиваться по мере получения отзывов. Тем не менее, я обновляю наши проекты до .net 4.6.2. После обновления пакетов nuget и решения проблем с зависимостями я наконец смог начать сборку. Однако во время запуска я получаю исключение, которое не могу решить. Исключение возникает позже из-за нулевого значения, но я отследил проблему до изменения способа ввода аргумента в метод.
Это метод с другим аргументом. Аргумент expression
используется по-разному в зависимости от версии .net.
public static IInterfaceNameChanged CreateScreenRule<TInstance>(Expression<Func<TInstance, ScreenRule>> expression)
where TInstance : new()
{
return CreateNewable(expression, null, RuleSetBase.RuleSetTypes.Req);
}
Это вызов CreateScreenRule ():
RuleFactory.CreateScreenRule<VehicleDriverAssignment>(i => i.VehicleDriverAssignments)
И подпись метода, который мы пытаемся создать:
public void VehicleDriverAssignments(ScreenRuleContext args)
{...}
Предварительное обновление: аргумент выражения входит в метод следующим образом:
i => Конвертировать (CreateDelegate (RuleEngine.ScreenRule, i, Void VehicleDriverAssignments (RuleEngine.ScreenRuleContext)))
Пост-апгрейд: метод выглядит следующим образом:
i => Преобразовать (Void VehicleDriverAssignments (RuleEngine.ScreenRuleContext) .CreateDelegate (RuleEngine.ScreenRule, i))
Ни один из кодов не изменился, единственное, что изменилось, - это обновление и другие действия, связанные с обновлением (обновления nuget, перенаправления привязки и т. Д.).
Есть идеи, почему обновление .net коренным образом меняет способ использования expression
?
Благодарность