Lazy Delegate Creator прерывается при обновлении до .net 4.6.2

Я не совсем уверен, с чего начать, поэтому этот вопрос, вероятно, будет развиваться по мере получения отзывов. Тем не менее, я обновляю наши проекты до .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?

Благодарность


person DontThinkJustGo    schedule 23.03.2018    source источник
comment
Делегат: публичный делегат void ScreenRule (контекст ScreenRuleContext);   -  person DontThinkJustGo    schedule 23.03.2018


Ответы (1)


Думаю, я нашел проблему. похоже, что Expression Body изменилось между этими версиями.

Различия тела выражения между .NET 4 и .NET 4.6.2

person DontThinkJustGo    schedule 23.03.2018